Условно связывающий Foreground с логическим значением - PullRequest
0 голосов
/ 07 марта 2009

У меня есть древовидная структура, показывающая данные XML, где каждый элемент обернут в класс, который предоставляет IsExpanded, обернутые имя и значение XElement и логический MatchesFilter, который устанавливается, если элемент соответствует определенному фильтру; Я хотел бы изменить цвет переднего плана, если MatchesFilter имеет значение true.

Что у меня сейчас есть:

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Children}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Width="110" Foreground="Blue" Text="{Binding Name}" />
            <TextBlock Foreground="{Binding Foreground}" Text="{Binding Value}" />
        </StackPanel>
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

где цвет переднего плана устанавливается в коде, который работает просто отлично, но вряд ли в духе WPF! Как мне сделать это правильно?

Редактировать: Спасибо, именно так, теперь я знаю, какую главу читать.

1 Ответ

1 голос
/ 08 марта 2009

Как то так?

<TextBlock Name="tbkValue" Text="{Binding Value}"/>

...

<HierarchialDataTemplate.Triggers>
  <DataTrigger Binding="{Binding Path=MatchesFilter}" Value="True">
      <Setter TargetName="tbkValue" Property="Foreground" Value="Red"/>
  </DataTrigger>
</HierarchialDataTemplate.Triggers>

Вы также можете создать триггер как ресурс и поделиться им между различными шаблонами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...