簡體   English   中英

無法在WPF中綁定MenuItem IsChecked屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM