[英]Unable to bind MenuItem IsChecked attribute in WPF
我正在嘗試將IsChecked綁定為第二次單擊的綁定值。 以下是我的xaml
<ContextMenu><MenuItem Header="Type" IsCheckable="True" IsChecked="{Binding isTypeChecked}" Checked="Type_Click"/>
<MenuItem Header="Price" IsCheckable="True" IsChecked="{Binding isPriceChecked}" Checked="Price_Click"/>
<MenuItem Header="Category" IsCheckable="True" IsChecked="{Binding isCategoryChecked}" Checked="Category_Click"/>
</ContextMenu>
xaml.cs如下
private void Type_Click(object sender, RoutedEventArgs e)
{
MainViewModel _mainWindowViewModel = new MainViewModel();
DataContext = _mainWindowViewModel;
_mainWindowViewModel.isTypeChecked = true;
_mainWindowViewModel.isPriceChecked = false;
_mainWindowViewModel.isCategoryChecked = false;
ItemsGrid.Columns[3].Visibility = Visibility.Visible;
ItemsGrid.Columns[1].Visibility = Visibility.Collapsed;
ItemsGrid.Columns[2].Visibility = Visibility.Collapsed;
}
ViewModel如下
public class MainViewModel : INotifyPropertyChanged
{
public MainViewModel() { }
private bool _isTypeChecked;
public bool isTypeChecked { get { return _isTypeChecked; } set { _isTypeChecked = value; NotifyPropertyChanged("isTypeChecked"); } }
private bool _isPriceChecked;
public bool isPriceChecked { get { return _isPriceChecked; } set { _isPriceChecked = value; NotifyPropertyChanged("isPriceChecked"); } }
private bool _isCategoryChecked;
public bool isCategoryChecked { get { return _isCategoryChecked; } set { _isCategoryChecked = value; NotifyPropertyChanged("isCategoryChecked"); } }
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName)); }
}
找不到我在做什么錯請幫助
最初,您的媒體資源將返回null。 我不確定這是否會引起您所遇到的問題,但是您應該初始化支持變量。 大概您會想從false開始。
private bool _isTypeChecked =false;
嘗試添加DataContext = this;
在您的MainViewModel中。 我曾經遇到過類似的問題,只需添加一點點就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.