【问题标题】:XAML: Refactor DataTemplateXAML:重构数据模板
【发布时间】:2013-10-10 10:19:30
【问题描述】:

我有一个超过 2k 行的 XAML 文件。我想重构为可管理的部分。

在资源部分,我有一个转换器,可以将枚举转换为 DataTemplate:

        <UserControl.Resources>
            <converters:SomeConverter x:Key="EnumToDataTemplateConverter">
                <converters:SomeConverter.NumericBoxTemplate>
                    <DataTemplate>
                        ... long template description ...
                    </DataTemplate>
                </converters:SomeConverter.NumericBoxTemplate>
            </converters:SomeConverter x:Key="EnumToDataTemplateConverter">
        </UserControl.Resources>

我已将 DataTemplate 重构为带有 x:Key="xyDataTemplate" 的 ResourceDictionary

我的问题是如何在原始位置创建它?

        <UserControl.Resources>

            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="XyTemplate.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>

            <converters:SomeConverter x:Key="EnumToDataTemplateConverter">
                <converters:SomeConverter.NumericBoxTemplate>
                    ???
                </converters:SomeConverter.NumericBoxTemplate>
            </converters:SomeConverter x:Key="EnumToDataTemplateConverter">
        </UserControl.Resources>

【问题讨论】:

    标签: c# xaml refactoring datatemplate resourcedictionary


    【解决方案1】:

    如果我们能在转换器中看到属性的声明会有所帮助,但现在尝试:

    <converters:SomeConverter x:Key="EnumToDataTemplateConverter"
                              NumericBoxTemplate="{StaticResource xyDataTemplate}"/>
    

    【讨论】:

    • 就像 XAMeLi 说的,你应该能够在你的转换器上创建 DataTemplate 属性,然后你可以通过在 XAML 中设置它们来绑定值
    • 是的,转换器具有 DataTemplate 属性。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2020-09-27
    • 2011-12-06
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多