combox数据过滤 wpf_- - WPF:筛选ItemCollection的ComboBox也会筛选绑定到同一ComboBoxes的其他ItemsSource...

本文介绍了如何解决在WPF中使用ComboBox进行数据过滤时,因筛选操作引起其他绑定相同ItemsSource的ComboBox同步过滤的问题。作者创建了一个自定义的MyComboBox类,重写ItemsSourceProperty元数据,避免了无限递归,并提供了注意事项,强调必须检查类型以防止无限循环,同时提醒使用CollectionViewSource来正确绑定数据。
摘要由CSDN通过智能技术生成

难看的解决方案

我创建了自己的MyComboBox,它从System.Windows.Controls.ComboBox.中继承了MyComboBox i重写了ItemsSourceProperty的元数据,因此只要更改了public partial class MyComboBox : ComboBox

{

static MyComboBox()

{

ItemsSourceProperty.OverrideMetadata(typeof(MyComboBox),

new FrameworkPropertyMetadata((IEnumerable)null, new PropertyChangedCallback(OnItemsSourceChanged)));

}

private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

{

ItemsControl ic = (ItemsControl)d;

IEnumerable oldValue = (IEnumerable)e.OldValue;

IEnumerable newValue = (IEnumerable)e.NewValue;

// We get into infinite recursion land without the following condition:

if (newValue.GetType() == typeof(Dictionary))

{

var cvs = new CollectionViewSource() { Source = ((Dictio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值