ConverterParameter: установка его внутри шаблона элемента - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь установить параметр конвертера для свойства элемента внутри ItemTemplate. Поскольку ConverterParameter не является свойством зависимости, Binding не работает.
Но мне действительно не нужна привязка, достаточно просто установить ее один раз, поскольку она никогда не изменится.

<ItemsControl ItemsSource="ItemsWithTypeProperty">
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <RadioButton IsChecked="{Binding SelectedItem.Base.Type, Converter={l:IsEqualConverter}, Mode=TwoWay, ConverterParameter={Type}}" />
  </DataTemplate>
 </ItemsControl.ItemTemplate>
</ItemsControl>

IsEqualConverter:
Преобразовать: сравнивает значение с параметром и возвращает результат
ConvertBack: если значение равно true, возвращается параметр

DataContext ItemTemplate - это класс, который содержит свойство с именем «Type».
Его тип - объект.

Есть ли способ заменить {Type} чем-то, что просто установит его (DataContext.) Type один раз? Если да, то как?

Ответы [ 2 ]

1 голос
/ 05 января 2012

Я не уверен, что именно Тип. Это System.Type объекта? Это всегда фиксированный тип? Вы могли бы написать что-то вроде:

ConverterParameter={x:Type local:TypeToCompare}

Если тип не является константой, вы можете переписать конвертер для реализации IMultiValueConverter и использовать MultiBinding .

0 голосов
/ 05 января 2012

Попробуйте использовать это:

......, ConverterParameter=Type}" />

И на вашем конвертере:

    if ((string)parameter == "Type"))
    {
        //Do some stuff
    }
...