Как передать ConverterParameter в HierarchicalDataTemplate - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть два 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>

И в «потребляющем» коде я бы написал что-то вроде (с другим ПАРАМЕТРОМ заполнителем):

<TreeView ItemTemplate="{StaticResource ProjectTreeEditItem, PARAMETER=One}" ...></TreeView>    

или

<TreeView ItemTemplate="{StaticResource ProjectTreeEditItem, PARAMETER=Two}" ...></TreeView>    

Как этого достичь? Подходящим (хотя и неоптимальным) решением было бы наличие двух шаблонов-оболочек, которые ссылаются на один общий шаблон (установка параметра оттуда, если проблема заключается в установке параметра как части определения ItemTemplate), но я бы не стал не знаю, как это сделать: o /

1 Ответ

0 голосов
/ 13 сентября 2018

Как этого достичь?

Путем определения шаблонов программно с использованием метода XamlReader.Load или класса FrameworkElementFactory.Пожалуйста, смотрите мой ответ здесь для примера:

Объединение шаблонов данных во время выполнения

Вы не можете сделать что-то вроде «передать (статический) ConverterParameter» другомушаблон в XAML.Боюсь, это не поддерживается языком разметки.

...