转换器与集合

时间:2011-10-14 14:35:54

标签: .net wpf xaml collections converter

在WPF中,在我的XAML中,我有一个绑定在IEnumerable上的dataGrid。收集物品有一个名为Sealed的物品。要知道订单是否密封。所以我做了一个转换器将它从一个列表切换到另一个列表。 Altought,当我从外部更改集合时,转换器未被调用。但如果我关闭并重新打开窗口,它就能正常工作。

      public object Convert(object value, Type targetType, object parameter,   System.Globalization.CultureInfo culture)
    {
        var collection = (ObservableCollection<OrderEntry>)value;
        var viewSource = new CollectionViewSource()
        {
            Source = collection,
        };
        viewSource.Filter += new FilterEventHandler(FilterInSealedOrderEntries);
        return viewSource.View;
    }

    private static void FilterInSealedOrderEntries(object sender, FilterEventArgs e)
    {
        var orderEntry = e.Item as OrderEntry;
        e.Accepted = orderEntry != null && orderEntry.Sealed;
    }

{Binding Path=OrderEntries.Collection, Converter={StaticResource ViewNotSealedOrderEntryCollectionValueConverter}}

在我的Xaml中。

每当我更改属性时,collectionContentChanged被调用但不是转换器,任何想法我做错了什么?

谢谢,如果不够明确,我会发表评论。

2 个答案:

答案 0 :(得分:1)

由于您在ValueConverter Binding DataGrid中指定了ItemsSource,因此只会在最初填充项目时调用它。

答案 1 :(得分:0)

IValueConverter接口还包含ConvertBack方法。我在你的代码中没有看到这个方法