【问题标题】:DataTemplate as resource with customizable bindingsDataTemplate 作为具有可定制绑定的资源
【发布时间】:2013-04-23 04:47:59
【问题描述】:

我有一个DataTemplate,我用它来表示一个带有如下符号的值:

<DataTemplate>
    <TextBlock VerticalAlignment="Center">
        <TextBlock.Text>
            <MultiBinding StringFormat="{}{0:G} {1}">
                <Binding Path="DisplayValue" />
                <Binding Path="UnitSymbol" />
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</DataTemplate>

这个模板在我的 XAML 中经常重复使用不同的绑定(即 DisplayValueUnitSymbol 不同)。我想创建一个 DataTemplate 作为资源并更改绑定,例如类似ItemTemplate="{StaticResource MyUnitTemplate, ValuePath=DisplayValue, UnitPath=UnitSymbol}"。我怎样才能做到这一点?

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

【问题讨论】:

    标签: .net wpf xaml data-binding datatemplate


    【解决方案1】:

    您可以完全按照您的要求进行操作,而且相当容易。首先,将您的 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 设置为您想要的任何内容。即,

       <TextBlock Style="{StaticResource TextBoxStyle}" /> //Set the ItemsSource to anything
    

    【讨论】:

    • 也许我不够清楚 - 当我绑定到 DataTemplate 时,我还想更改 Bindings - DisplaySymbolUnitSymbol 在每次使用时会有所不同。跨度>
    • 啊,我明白了。最佳做法是创建多个数据模板,或者创建一个通用模型,这样您就不需要更改绑定。
    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2019-12-14
    • 2013-01-20
    相关资源
    最近更新 更多