在WPF中,在我的XAML中,我有一个IEnumerable绑定的dataGrid。收集物品有一个称为密封的特性。要知道订单是否被封存。所以我制作了一个转换器,将它从一个列表切换到另一个列表。 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
被称为,但不是转换器,任何想法我做错了什么?
谢谢,我会发表评论,如果它不够清楚。
公共对象ConvertBack(对象值,类型targetType, 对象参数,System.Globalization.CultureInfo culture) {0}新增NotImplementedException(); } – Jonathan
尝试分析Visual Studio中的输出窗口。它写入所有绑定警告和例外 – Artem
是的,我看到,没有什么与dataGrid itemsSource相关。如果我设置了一个断点到collectionContentChanged,它会通过但不是由转换器。不太清楚发生了什么事。 – Jonathan