在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
被调用但不是转换器,任何想法我做错了什么?
谢谢,如果不够明确,我会发表评论。
答案 0 :(得分:1)
由于您在ValueConverter
Binding
DataGrid
中指定了ItemsSource
,因此只会在最初填充项目时调用它。
答案 1 :(得分:0)
IValueConverter接口还包含ConvertBack方法。我在你的代码中没有看到这个方法