一个视图,两个带过滤器的组合框会互相干扰过滤器

时间:2015-08-21 09:13:07

标签: c# wpf combobox

我创建了一个继承自Combobox的FilterCombobox。 此FilterCombobox根据用户输入过滤结果。 在我看来,我有两个这样的FilterCombobox,它们引用相同的ObserveableCollection。

  1. 我可以在一个FilterCombobox1中过滤而不过滤另一个,但是
  2. 当我将焦点更改为下一个FilterCombobox2时,FilterCombobox1将根据在第三个字母后面的FilterCombobx2中应用的过滤器进行过滤(看起来像这是一个重复出现的模式)
  3. 如果我有两个单独的ObserveableCollection,那么这个问题不会调用,所以我误认为我的过滤方法对实际的ObserveableCollection做了一些事情。

    过滤方法:

    private void SetFilterToTextInput()
            {
                Items.Filter += a =>
                {
                    var propertyString = GetPropertyString(a);
                    if (propertyString.ToUpper().Contains(Text.ToUpper()))
                        return true;
                    return false;
                };
            }
    

    这是我对这两个FilterComboboxes的XAML实现:

    <Controller:FilterComboBox
        ItemsSource="{Binding Path=Collection,UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
        DisplayMemberPath="Name" 
        SelectedValue="{Binding Left, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
        Width="135"
    />
    <TextBlock Margin="0,5,5,0" FontSize="16" VerticalAlignment="Center" >-</TextBlock>
    <Controller:FilterComboBox
        ItemsSource="{Binding Path=Collection, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
        DisplayMemberPath="Name" 
        SelectedValue="{Binding Right, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
        Width="135"
    /> 
    

0 个答案:

没有答案