C# WPF toolkit复选框SelectedItemsOverride不工作

C# WPF toolkit复选框SelectedItemsOverride不工作,c#,.net,wpf,C#,.net,Wpf,我有一个wpf工具包2中的复选框。我无法获取所有选定的项目。我读到我应该使用SelectedItemsOverride来获取我所选的所有项目,但它似乎不起作用。我在setter中为TestClassSelected设置了一个断点,但它从未被触发。有什么想法吗 <xctk:CheckListBox Name="MyCheckList" ItemsSource="{Binding TestClassCollection}"

我有一个wpf工具包2中的复选框。我无法获取所有选定的项目。我读到我应该使用SelectedItemsOverride来获取我所选的所有项目,但它似乎不起作用。我在setter中为TestClassSelected设置了一个断点,但它从未被触发。有什么想法吗

<xctk:CheckListBox Name="MyCheckList"
                   ItemsSource="{Binding TestClassCollection}"
                   DisplayMemberPath="DisplayName"
                   SelectedItemsOverride="{Binding TestClassSelected}"  />
这是我一直在使用的测试数据

TestClassCollection = new List<TestClass>
{
    new TestClass {FirstName = "FIrstName", LastName = "LastName"},
    new TestClass {FirstName = "Brad", LastName = "Holder"},
    new TestClass {FirstName = "Sam", LastName = "Ryans"},
    new TestClass {FirstName = "Ryan", LastName = "Thomas"},
    new TestClass {FirstName = "Lee", LastName = "Rod"},
    new TestClass {FirstName = "Amanda", LastName = "Gustaf"},
    new TestClass {FirstName = "Chris", LastName = "Holems"},
    new TestClass {FirstName = "Doug", LastName = "Schnitzel"},
    new TestClass {FirstName = "Lisa", LastName = "Bull"},
    new TestClass {FirstName = "Fred", LastName = "Simpson"},
    new TestClass {FirstName = "Scott", LastName = "Rogers"}
};
TestClassCollection=新列表
{
新测试类{FirstName=“FirstName”,LastName=“LastName”},
新的测试类{FirstName=“Brad”,LastName=“Holder”},
新的测试类{FirstName=“Sam”,LastName=“Ryans”},
新的测试类{FirstName=“Ryan”,LastName=“Thomas”},
新的测试类{FirstName=“Lee”,LastName=“Rod”},
新的测试类{FirstName=“Amanda”,LastName=“Gustaf”},
新的测试类{FirstName=“Chris”,LastName=“Holems”},
新的TestClass{FirstName=“Doug”,LastName=“Schnitzel”},
新的测试类{FirstName=“Lisa”,LastName=“Bull”},
新的测试类{FirstName=“Fred”,LastName=“Simpson”},
新测试类{FirstName=“Scott”,LastName=“Rogers”}
};

尝试在绑定时添加模式和更新资源记录器

<xctk:CheckListBox Name="MyCheckList"
                   ItemsSource="{Binding TestClassCollection}"
                   DisplayMemberPath="DisplayName"
                   SelectedItemsOverride="{Binding TestClassSelected, 
                          Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

更新: 我已经检查了上一期的示例代码。 尝试将TestClassSelected属性更改为ObservableCollection。(仍保留.xaml中所述的更新资源记录器)

public observetecollection TestClassSelected

我遇到了同样的问题,通过分配属性的私有字段解决了这个问题

在你的例子中

private ObservableCollection<TestClass> _testClassSelected=new ObservableCollection<TestClass>();
private ObservableCollection\u testClassSelected=new ObservableCollection();

我结合了以前的答案/评论,对我有效的方法是将
selectedemsoverride
绑定到
observateCollection
,包括
UpdateSourceTrigger=PropertyChanged
,并将方法附加到
observateCollection
的事件
CollectionChanged

XAML:


ViewModel中的代码:

public IEnumerable allitem{get;set;}
公共ObservableCollection SelectedItems{get;set;}
公共视图模型()
{
SelectedItems=新的ObservableCollection();
SelectedItems.CollectionChanged+=SelectedItems\u CollectionChanged;
}
private void SelectedItems\u CollectionChanged(对象发送方,System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
//处理集合更改事件
}

谢谢您的回复,我尝试了一下,但运气不好。即使使用触发器,它仍然不会为绑定属性运行setter。仍然没有,我认为这可能是绑定中的错误,但是输出窗口中没有任何内容,并且在第一次启动时调用get,因此我知道绑定是正确的。我想知道控件是否有问题。我还尝试使用“SelectedItem”获取最后一个选中的项目,但这也不起作用。您是否检查了我粘贴在更新中的代码?我没有尝试链接中的代码。我会试试看它是否有效。如果不是这样的话,我可能只是创建自己的控件,我不会想到这样一个简单的控件会有bug,但谁知道呢。我知道为时已晚,但我遇到了这种情况,对我来说,帮助了_testClassSelected=new IEnumerable()OP-你找到了解决方案吗?我在这个帖子中尝试了各种建议组合,但都没有效果。我看到各种来源说“在v1.8中修复”等等,但它在2.1DLeh上对我不起作用-我相信我已经修复了这个问题。我最终需要在代码隐藏中使用事件,因此它不是纯mvvm解决方案。如果你愿意的话,我可以把这门课挖出来寄给你,这样你就可以看看我做了什么。让我知道,可能需要几天的时间。让我知道。
<xctk:CheckListBox Name="MyCheckList"
                   ItemsSource="{Binding TestClassCollection}"
                   DisplayMemberPath="DisplayName"
                   SelectedItemsOverride="{Binding TestClassSelected, 
                          Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
public ObservableCollection<TestClass> TestClassSelected
private ObservableCollection<TestClass> _testClassSelected=new ObservableCollection<TestClass>();