Wpf 如何将ConverterParameter传递到HierarchycalDataTemplate

Wpf 如何将ConverterParameter传递到HierarchycalDataTemplate,wpf,xaml,hierarchicaldatatemplate,Wpf,Xaml,Hierarchicaldatatemplate,我有两个相同的HierarchycalDataTemplates,但用于ItemsSource属性的ConverterParameter除外: <HierarchicalDataTemplate x:Key ="Template1" ItemsSource="{Binding Converter ={StaticResource DemoConverter}, ConverterParameter='One'}"> ... </HierarchicalDataTe

我有两个相同的
HierarchycalDataTemplate
s,但用于
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>
并且,在“消费”代码中,我将编写如下内容(使用另一个参数占位符):



如何做到这一点?一个合适的(虽然是次优的)解决方案是有两个“包装器”模板,它们引用一个公共模板(如果将参数设置为
ItemTemplate
定义的一部分是个问题,则从那里设置参数),但我也不知道如何做到这一点:o/

如何做到这一点

通过使用
XamlReader.Load
方法或
FrameworkElementFactory
类以编程方式定义模板。有关示例,请参见我的回答:

不能执行类似“将(静态)
ConverterParameter
传递到XAML中的另一个模板”这样的操作。恐怕标记语言不支持这一点

<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>