如何将ConverterParameter传递到HierarchicalDataTemplate中

时间:2018-09-12 16:37:43

标签: wpf xaml hierarchicaldatatemplate

我有两个HierarchicalDataTemplate相同,除了用于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 /

1 个答案:

答案 0 :(得分:0)

  

如何实现?

通过使用| IDClient | Name | IDClient | IDState | Name | IDBillState | AllowModify | |----------|------|----------|---------|--------|-------------|-------------| | 1 | John | 1 | 2 | Bill 2 | 2 | 1 | | 2 | Jane | NULL | NULL | NULL | NULL | NULL | 方法或XamlReader.Load类以编程方式定义模板 。请在此处查看我的答案以获取示例:

Combining DataTemplates at runtime

您无法执行“将(静态)FrameworkElementFactory”传递给XAML中的另一个模板的操作。恐怕标记语言不支持此功能。