.net 带收集的转换器
在WPF中,在我的XAML中,我有一个绑定在IEnumerable上的数据网格。收集项目有一个名为Sealed的属性。了解订单是否密封。所以我做了一个转换器,将它从一个列表切换到另一个列表。另外,当我从外部更改集合时,转换器不会被调用。但是如果我把窗户关上再打开,它就可以正常工作了.net 带收集的转换器,.net,wpf,xaml,collections,converter,.net,Wpf,Xaml,Collections,Converter,在WPF中,在我的XAML中,我有一个绑定在IEnumerable上的数据网格。收集项目有一个名为Sealed的属性。了解订单是否密封。所以我做了一个转换器,将它从一个列表切换到另一个列表。另外,当我从外部更改集合时,转换器不会被调用。但是如果我把窗户关上再打开,它就可以正常工作了 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureI
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;
}
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
var集合=(ObservableCollection)值;
var viewSource=new CollectionViewSource()
{
来源=收集,
};
viewSource.Filter+=新的FilterEventHandler(FilterInSealedOrderEntries);
返回viewSource.View;
}
私有静态无效筛选器密封的OrderEntries(对象发送方、筛选器目标方)
{
var orderEntry=e.作为orderEntry的项目;
e、 Accepted=orderEntry!=null&&orderEntry.Sealed;
}
{Binding Path=OrderEntries.Collection,Converter={StaticResource ViewNotSealedOrderEntryCollectionValueConverter}
在我的Xaml中
每当我更改属性时,都会调用collectionContentChanged
,但不会调用转换器,知道我做错了什么吗
谢谢,如果不够清楚,我会评论的 IValueConverter接口还包含ConvertBack方法。我在您的代码中看不到这种方法,因为您在
绑定中为数据网格项资源指定值转换器
,只会在初始填充项时调用它 公共对象ConvertBack(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性){抛出新的NotImplementedException();}尝试在Visual Studio中分析输出窗口。它写入了所有绑定警告和例外是的,我看到了,但是,没有任何与dataGrid itemsSource相关的内容。如果我将断点设置为collectionContentChanged,它将通过但不会通过转换器。不太确定发生了什么。请设置断点以转换方法。我认为viewSource.Filter+=新的FilterEventHandler(FilterinesSealedOrderEntries)有问题;返回viewSource.View;阅读本文,使用CollectionViewSource.GetDefaultView()然后通过谓词进行过滤