如何检查特定项目选中还是未选中

时间:2011-02-27 09:13:46

标签: c# wpf

我在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

问题

  

如何实现属性更改   我可以知道检查了哪个项目   哪个是未经检查的

My Code solution

1 个答案:

答案 0 :(得分:2)

您可以收集selected itemslist.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));
        }
    }