Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用mvvm C中的绑定获取wpf中复选框的bool值_C#_Wpf_Mvvm_Binding - Fatal编程技术网

C# 使用mvvm C中的绑定获取wpf中复选框的bool值

C# 使用mvvm C中的绑定获取wpf中复选框的bool值,c#,wpf,mvvm,binding,C#,Wpf,Mvvm,Binding,我有以下代码: 视图模型: DownloadDeviceViewModel : ViewModelBase { private bool _isSelected; public bool isSelected { get { return _isSelected; } set { if (_isSelected != value)

我有以下代码:

视图模型:

DownloadDeviceViewModel : ViewModelBase
{
    private bool _isSelected;

    public bool isSelected
    {
        get
        {
            return _isSelected;
        }
        set
        {
            if (_isSelected != value)
            {
                _isSelected = value;
                OnPropertyChanged();

            }
        }
    }

    public void Method()
    {
        if(isSelected)
        {

        }
    }
}
XAML:

方法onPropertyChanged位于ViewModelBase中。我没有插入这一点,使其更容易阅读

每次在方法中调用isSelected的值时,isSelected返回的值都是错误的。 即使我选中了复选框并且isSelected的值设置为true

但在该方法中,值变回false

我错误地实现了什么,该值始终更改为false


谢谢大家

在您的setter中,删除if-conditional,您不需要它。这可能会给你带来麻烦

        set
        {
                _isSelected = value;
                OnPropertyChanged();
        }

您的ViewModel需要InotifyProperty更改:

那么在XAML中,就不需要UpdateSourceTrigger了

<CheckBox Content="Checkbox" IsChecked="{Binding isSelected}"/>

是否足够

请确保将xaml的DataContext设置为正在使用的DownloadDeviceViewModel的实例。是的,我已设置了DataContext。PropertyChanged是否正确实现?请尝试PropertyChangedNameofIsselected否,这没有帮助。仅当复选框的当前状态与所需值没有差异时,if条件才适用。e、 g.如果我有一个按钮,选择全部。那么我就不需要启动PropertyChanged了。您是否确保将DataContext设置为ViewModel?是的,我已经设置了DataContext。Max,您发布的代码离完整的示例项目只有一步之遥。我强烈建议您将问题隔离到一个只包含复选框、视图模型和ViewModelBase的新项目中。如果问题仍然存在,请发布MainWindow.xaml、MainWindow.xaml.cs和ViewModelBase。根据你发布的内容,没有明显的错误。因此,问题可能出在你没有发布的区域。谭布我想问题出在主窗口。我想我对自定义控件的绑定是错误的,这会导致在查询bool时创建第二个线程。我将尝试使主窗口笔直。ViewModelBase中已存在NotifyPropertyChanged方法。我没有在这里列出它,因为它的代码太多了。@Max所以我猜您在ViewModelBase上有一个错误,因为对我来说,它工作得很好,请检查在选中/取消选中复选框时,是否通过了NotifyPropertyChanged
DownloadDeviceViewModel : ViewModelBase, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string nomPropriete)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(nomPropriete));
    }
    private bool _isSelected;

    public bool isSelected
    {
        get
        {
            return _isSelected;
        }
        set
        {
            if (_isSelected != value)
            {
                _isSelected = value;
                NotifyPropertyChanged("isSelected");
            }
        }
    }

    public void Method()
    {
        if(isSelected)
        {

        }
    }
}
<CheckBox Content="Checkbox" IsChecked="{Binding isSelected}"/>