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>