如何在资源字典中使用引用转换器
How to use reference converter within a resource dictionary
我创建了一个多绑定转换器 (ListItemDescriptionConverter),它将多个值组合成一个字符串作为 ListBox 项的输出。但是我不知道如何让资源字典指向单独的 .cs 文件中的转换器 class。当我使用以下标记时找不到它:
<TextBlock Style="{StaticResource BasicTextStyle}">
<TextBlock.Text>
<MultiBinding Converter="StaticResource {ListItemDescriptionConverter}">
<Binding Path="Genres"></Binding>
<Binding Path="Year"></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
我是否必须在资源字典中执行其他操作才能访问转换器 class?我无法在 Window.Resources
中添加引用,因为它需要在资源字典中,以便我可以在整个应用程序中重复使用该样式。
将转换器定义为资源,例如在您的 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>
然后您可以使用 StaticResource
标记扩展和 x:Key
:
引用它
<MultiBinding Converter="{StaticResource ListItemDescriptionConverter}">
另一种选择是使用元素语法将 Converter
属性 设置为转换器 class 的实例:
<MultiBinding>
<MultiBinding.Converter>
<local:ListItemDescriptionConverter />
</MultiBinding.Converter>
</MultiBinding>
我创建了一个多绑定转换器 (ListItemDescriptionConverter),它将多个值组合成一个字符串作为 ListBox 项的输出。但是我不知道如何让资源字典指向单独的 .cs 文件中的转换器 class。当我使用以下标记时找不到它:
<TextBlock Style="{StaticResource BasicTextStyle}">
<TextBlock.Text>
<MultiBinding Converter="StaticResource {ListItemDescriptionConverter}">
<Binding Path="Genres"></Binding>
<Binding Path="Year"></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
我是否必须在资源字典中执行其他操作才能访问转换器 class?我无法在 Window.Resources
中添加引用,因为它需要在资源字典中,以便我可以在整个应用程序中重复使用该样式。
将转换器定义为资源,例如在您的 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>
然后您可以使用 StaticResource
标记扩展和 x:Key
:
<MultiBinding Converter="{StaticResource ListItemDescriptionConverter}">
另一种选择是使用元素语法将 Converter
属性 设置为转换器 class 的实例:
<MultiBinding>
<MultiBinding.Converter>
<local:ListItemDescriptionConverter />
</MultiBinding.Converter>
</MultiBinding>