I've created a multibinding converter (ListItemDescriptionConverter) that will combine several values into a single string as output for ListBox items. However I don't know how to get the resource dictionary to point to the converter class in a separate .cs file. It cannot be found when I use the following markup:
<TextBlock Style="{StaticResource BasicTextStyle}">
<TextBlock.Text>
<MultiBinding Converter="StaticResource {ListItemDescriptionConverter}">
<Binding Path="Genres"></Binding>
<Binding Path="Year"></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Is there something else I must do within the resource dictionary to access the converter class? I cannot add the reference within Window.Resources
as it needs to be within a resource dictionary so I can reuse the style throughout my app.
Define the converter as a resource, for example in your 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>
You can then reference it using the StaticResource
markup extension and the x:Key
:
<MultiBinding Converter="{StaticResource ListItemDescriptionConverter}">
The other option is to set the Converter
property to an instance of your converter class using element syntax:
<MultiBinding>
<MultiBinding.Converter>
<local:ListItemDescriptionConverter />
</MultiBinding.Converter>
</MultiBinding>