我有一个DataTemplate
,我用它来表示符号的值,如下所示:
<DataTemplate>
<TextBlock VerticalAlignment="Center">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:G} {1}">
<Binding Path="DisplayValue" />
<Binding Path="UnitSymbol" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
此模板在我的XAML中经常重复,具有不同的绑定(即DisplayValue
和UnitSymbol
不同)。我想创建一个DataTemplate
作为资源并更改绑定,例如像ItemTemplate="{StaticResource MyUnitTemplate, ValuePath=DisplayValue, UnitPath=UnitSymbol}"
这样的东西。我怎样才能做到这一点?
请注意!我意识到我可以创建一个自定义数据类型,它保存一个单位的值并为这种类型创建一个模板,但我很好奇是否可以使用上面提到的资源。
答案 0 :(得分:0)
你可以很容易地完成你想要的任务。首先,将您的DataTemplate放在某个地方的资源字典中(或者您可以将它放在Windows或UserControl Resources部分中)。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Name="TextBoxStyle">
<TextBlock VerticalAlignment="Center">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:G} {1}">
<Binding Path="DisplayValue" />
<Binding Path="UnitSymbol" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
然后,在您的usercontrol中,引用资源库。
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/SialTPChat.UI.Design;component/Styles/ResourceDic.xaml" />
</ResourceDictionary.MergedDictionaries>
</UserControl.Resources>
现在,您可以在此用户控件中的任何位置使用它,并且可以将文本框的ItemsSource设置为您想要的任何内容。 IE,
<TextBlock Style="{StaticResource TextBoxStyle}" /> //Set the ItemsSource to anything