c# - 如何将 CollectionViewSource 传递给转换器?

标签 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 传递给边框背景属性中的转换器,但它将继续传递 null。

我还尝试将 Path=. 添加到边框背景绑定(bind)中,但没有任何区别。

我错过了什么吗?


编辑:

我刚刚在 ListViewItemsSource 上尝试了相同的绑定(bind),它将很好地将 ListCollectionView 对象传递给转换器,使用此代码:

<ListView ItemsSource="{Binding Source={StaticResource filteredSymbols}, , Converter={StaticResource MultiThresholdToReturnValueConverter}}" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="item" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

发生什么事了?

最佳答案

我找到了解决此问题的方法,方法是将资源设置为后面代码中的 DependencyProperty 并绑定(bind)到该资源,如下所示:

隐藏代码:

...

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);
}

...

然后使用绑定(bind):

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

关于c# - 如何将 CollectionViewSource 传递给转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56165645/

相关文章:

c# - wpf c# 更改鼠标悬停背景

wpf - 您可以在 XAML 中向数据绑定(bind) ItemsControl 添加额外的项目吗?

c# - 具有附加属性的 ControlTemplate 中的命令绑定(bind)

c# - 用泛型和约束覆盖虚方法

c# - 将 Microsoft.AspNetCore.Hosting.WindowsServices 与 .Net Core 2.x 结合使用

c# - 即使成功采用了路径,图像也不会显示-MVVM WPF

c# - 为文本 block 加载字符串资源 x :Uid in code behind

c# - WPF SubControl(如 TextBlock)不使用 TemplateSelector 从窗口继承样式

c# - 制作用户控制脉冲

c# - 自定义 SignalR 的错误消息