如何将ConverterParameter传递给HierarchicalDataTemplate

问题描述 投票:-1回答:1

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

wpf xaml hierarchicaldatatemplate
1个回答
0
投票

怎么能实现这一目标?

通过使用XamlReader.Load方法或FrameworkElementFactory类以编程方式定义模板。请在此处查看我的答案以获取示例:

Combining DataTemplates at runtime

你不能做像“将(静态)ConverterParameter”传递给XAML中的另一个模板。我担心标记语言不支持此功能。

© www.soinside.com 2019 - 2024. All rights reserved.