我在wpf中创建了复选框,从Internet获取它。我想看看哪个项目已选中或未选中。任何想法如何执行此操作 这里是代码
类
public class CheckedListItem
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsChecked { get; set; }
public string Email { get; set; }
}
用法
List<CheckedListItem> AvailablePresentationObjects = new List<CheckedListItem>();
CheckedListItem item = new CheckedListItem();
for (int i = 0; i < 10; i++)
{
item = new CheckedListItem();
item.Id = i;
item.Name = i.ToString();
item.IsChecked = false;
AvailablePresentationObjects.Add(item);
}
list.ItemsSource = AvailablePresentationObjects;
XMAL
<ListBox x:Name="list" Margin="3,277,0,0" Height="234" VerticalAlignment="Top" Selec
tionMode="Extended">
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<my:RibbonCheckBox Label="{Binding Name}" IsChecked="{Binding IsChecked}" />
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
从这里拿走它 Checked ListBox
问题
如何实现属性更改 我可以知道检查了哪个项目 哪个是未经检查的
答案 0 :(得分:2)
您可以收集selected items:list.SelectedItems
。
您可以投射到CheckedListItem
并检查该项目的每个项目。
如果要处理属性更改,则应在CheckedListItem
类
INotifyPropertyChanged
INotifyPropertyChanged示例:
将其添加到您的班级并在属性中调用OnPropertyChanged
:
private boolean _isChecked;
public boolean IsChecked
{
get { return _isChecked; }
set
{
_isChecked= value;
OnPropertyChanged("IsChecked");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}