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}"/>