Как передать параметру преобразователя что-то, что не является жестко закодированным - PullRequest
4 голосов
/ 15 июня 2011

Что-то вроде:

 <TextBlock Text="{Binding Text,Converter={StaticResource
  ccc},ConverterParameter=PersonName}"/>

, когда имя человека, например, является свойством класса.

Обновление:

Я виделрешение, которое говорит унаследовать от DependencyObject и реализовать IValueConverter.Я хочу знать, есть ли что-то попроще.

Ответы [ 2 ]

5 голосов
/ 15 июня 2011

Ответ прост, но не то, что вы хотите услышать.

Вы можете назначить привязку только в DependencyProperty для объекта DependencyObject. Привязка не наследуется от DO, поэтому вы не можете привязать параметр конвертера.

Если вы хотите, чтобы в конвертер передавалось другое состояние, возможно, вам придется создать подкласс для нужного объекта и добавить новые свойства

2 голосов
/ 15 июня 2011

Вы смотрели в MultiBinding?Если вы хотите, чтобы в конвертер были отправлены два свойства, например «Текст» и «Персона», вы можете сделать что-то вроде этого:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource ccc}">
      <Binding Path="Text"/>
      <Binding Path="PersonName"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

Это предполагает, что «Текст» и «Персона» являются свойствамиDataContext.Возможно, вам придется изменить пути привязки, если это не так.

...