将CheckListBox绑定到ViewModel
本文关键字:ViewModel 绑定 CheckListBox | 更新日期: 2023-09-27 18:18:35
我正在使用WPF工具包中的CheckListBox,并试图将其绑定到我的ViewModel。除了从控件中获得所选值外,我还希望能够通过单击按钮清除任何选择来重置它。我被困在如何绑定集合中每个项目的选中或选中状态,但如果我的整个方法都失败了,我也希望能得到一些指导。
我已经创建了一个简单的类,它带有一个字符串描述符和一个布尔属性,我打算用它来指示每个复选框的状态…
public class DrugInfluence : INotifyPropertyChanged
{
public string Impairment { get; set; }
private bool isChecked;
public bool IsChecked
{
get { return isChecked; }
set
{
if(isChecked != value)
{
isChecked = value;
OnPropertyChanged("IsChecked");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
ViewModel中一个名为"损伤列表"的DrugInfluence对象集合,我想将其绑定到CheckListBox控件本身…
public List<DrugInfluence> ImpairmentList
{
get
{
return impairmentList;
}
set
{
if(impairmentList != value)
{
impairmentList = value;
NotifyPropertyChanged("ImpairmentList");
}
}
}
以及我用来将ViewModel绑定到CheckListBox控件的XAML…
<sdk:CheckListBox Margin="6"
ItemsSource="{Binding ImpairmentList}"
DisplayMemberPath="Impairment"
SelectedMemberPath="IsChecked"
SelectedItemsOverride="{Binding SelectedImpairments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</sdk:CheckListBox>
这是您正在使用的控件吗?如果是这样,看起来SelectedMemberPath就是您想要绑定的属性。如果你想以编程的方式检查/取消检查,你还需要在IsChecked属性改变时引发一个事件。例如,
public class DrugInfluence : INotifyPropertyChanged
{
public string Impairment { get; set; }
private bool _isChecked;
public bool IsChecked
{
get{ return _isChecked;}
set
{
if (_isChecked!= value)
{
_isChecked= value;
OnPropertyChanged("IsChecked");
}
};
}
}
然后实现INotifyPropertyChanged成员的其余部分