我有两个相同的HierarchicalDataTemplate
s,除了用于ConverterParameter
属性的ItemsSource
:
<HierarchicalDataTemplate x:Key ="Template1"
ItemsSource="{Binding Converter ={StaticResource DemoConverter}, ConverterParameter='One'}">
...
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key ="Template2"
ItemsSource="{Binding Converter ={StaticResource DemoConverter}, ConverterParameter='Two'}">
...
</HierarchicalDataTemplate>
如何避免冗余(由...
替换)?我想只有一个模板,我可以通过(静态)ConverterParameter
。像这样的东西(使用PARAMETER占位符):
<HierarchicalDataTemplate x:Key ="Template"
ItemsSource="{Binding Converter ={StaticResource DemoConverter}, ConverterParameter={PARAMETER}">
...
</HierarchicalDataTemplate>
并且,在“消费”代码中,我会写一些(与另一个PARAMETER占位符):
<TreeView ItemTemplate="{StaticResource ProjectTreeEditItem, PARAMETER=One}" ...></TreeView>
要么
<TreeView ItemTemplate="{StaticResource ProjectTreeEditItem, PARAMETER=Two}" ...></TreeView>
怎么能实现这一目标?一个合适的(虽然次优)解决方案是有两个“包装”模板引用一个公共模板(从那里设置参数,如果将参数设置为ItemTemplate
定义的一部分是问题),但我不会知道如何做到这一点:o /
怎么能实现这一目标?
通过使用XamlReader.Load
方法或FrameworkElementFactory
类以编程方式定义模板。请在此处查看我的答案以获取示例:
Combining DataTemplates at runtime
你不能做像“将(静态)ConverterParameter
”传递给XAML中的另一个模板。我担心标记语言不支持此功能。