4

我有一个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}". 我怎样才能做到这一点?

笔记!我意识到我可以创建一个包含单位值的自定义数据类型并为此类型创建一个模板,但我很好奇是否可以使用上述资源。

4

1 回答 1

0

你可以做你正在寻找的东西,而且相当容易。首先,将您的 DataTemplate 放在某个资源字典中(或者您可以将它放在 Windows 或 UserControl 资源部分)。

    <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.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
于 2013-04-29T13:56:18.470 回答