如何将CollectionViewSource传递给转换器?

时间:2019-05-16 09:48:04

标签: c# wpf xaml collectionviewsource

我有这样的东西:

<UserControl.Resources>
    <ResourceDictionary>
        <CollectionViewSource x:Key="filteredSymbols" Source="{Binding Symbols ,RelativeSource={RelativeSource AncestorType=UserControl}}" 
                              Filter="Symbols_CollectionViewSource_Filter" IsLiveFilteringRequested="True" >
            <CollectionViewSource.LiveFilteringProperties>
                <sys:String>DisplayPage</sys:String>
            </CollectionViewSource.LiveFilteringProperties>
        </CollectionViewSource>
    </ResourceDictionary>
</UserControl.Resources>

...

<Border Background="{Binding Source={StaticResource filteredSymbols}, Converter={StaticResource MultiThresholdToReturnValueConverter}}" >

我正在尝试将ListCollectionView传递给border背景属性中的转换器,但是它将继续传递null。

我还尝试将Path=.添加到边框背景绑定中,这没什么区别。

我想念什么吗?


编辑:

我刚刚在ListView的{​​{1}}上尝试了相同的绑定,并使用以下代码将ItemsSource对象传递给了转换器:

ListCollectionView

怎么回事?

1 个答案:

答案 0 :(得分:1)

我找到了解决此问题的方法,方法是在后面的代码中将资源设置为... public static readonly DependencyProperty FilteredSymbolsProperty = DependencyProperty.Register(nameof(FilteredSymbols), typeof(CollectionViewSource), typeof(SymbolSummaryControl)); public CollectionViewSource FilteredSymbols { set { SetValue(FilteredSymbolsProperty, value); } get { return (CollectionViewSource)GetValue(FilteredSymbolsProperty); } } public ctor() { InitializeComponent(); FilteredSymbols = (CollectionViewSource)this.Resources["filteredSymbols"]; Debug.Assert(FilteredSymbols != null); } ... ,然后像这样绑定到该资源:

后面的代码:

Background="{Binding Path=FilteredSymbols.View, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource MultiThresholdToReturnValueConverter}}"

然后使用绑定:

paste0("Max is: ", do.call(max,c_01), " at index: ",which.max(c_01))
[1] "Max is: 9 at index: 3"