>我有两个相同的HierarchicalDataTemplate
,除了用于ItemsSource
属性的ConverterParameter
:
<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
传递到。像这样的东西(带有参数占位符(:
<HierarchicalDataTemplate x:Key ="Template"
ItemsSource="{Binding Converter ={StaticResource DemoConverter}, ConverterParameter={PARAMETER}">
...
</HierarchicalDataTemplate>
而且,在"消费"代码中,我会写类似的东西(使用另一个参数占位符(:
<TreeView ItemTemplate="{StaticResource ProjectTreeEditItem, PARAMETER=One}" ...></TreeView>
或
<TreeView ItemTemplate="{StaticResource ProjectTreeEditItem, PARAMETER=Two}" ...></TreeView>
如何实现这一点?一个合适的(虽然次优(解决方案是有两个引用一个通用模板的"包装器"模板(如果将参数设置为ItemTemplate
定义的一部分是问题,则从那里设置参数(,但我也不知道该怎么做:o/
如何实现这一点?
通过使用XamlReader.Load
方法或FrameworkElementFactory
类以编程方式定义模板。请看我的回答 这里的例子:
在运行时合并数据模板
不能执行"将(静态(ConverterParameter
传递到XAML 中的另一个模板"之类的操作。恐怕标记语言不支持这一点。