如何在资源字典中使用参考转换器

Chr*_*sUK 2 wpf valueconverter c#-4.0

我创建了一个多绑定转换器(ListItemDescriptionConverter),它将多个值组合到一个字符串中,作为ListBox项目的输出。但是我不知道如何获取资源字典以指向单独的.cs文件中的转换器类。当我使用以下标记时找不到它:

            <TextBlock Style="{StaticResource BasicTextStyle}">
                <TextBlock.Text>
                    <MultiBinding Converter="StaticResource {ListItemDescriptionConverter}">
                        <Binding Path="Genres"></Binding>
                        <Binding Path="Year"></Binding>
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
Run Code Online (Sandbox Code Playgroud)

我必须在资源字典中做其他事情来访问转换器类吗?我无法在其中添加引用,Window.Resources因为它需要在资源字典中,因此我可以在整个应用程序中重用该样式。

mm8*_*mm8 5

将转换器定义为资源,例如在您的中App.xaml

<Application x:Class="WpfApplication1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication8" 
             StartupUri="MainWindow.xaml">
   <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Skins\DefaultSkinDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <local:ListItemDescriptionConverter x:Key="ListItemDescriptionConverter" />
    </ResourceDictionary>
    </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用StaticResource标记扩展名和来引用它x:Key

<MultiBinding Converter="{StaticResource ListItemDescriptionConverter}">
Run Code Online (Sandbox Code Playgroud)

另一个选择是Converter使用元素语法将属性设置为转换器类的实例:

<MultiBinding>
    <MultiBinding.Converter>
        <local:ListItemDescriptionConverter />
    </MultiBinding.Converter>
</MultiBinding>
Run Code Online (Sandbox Code Playgroud)