Опционально отображать изображение в HierarchicalDataTemplate - PullRequest
0 голосов
/ 27 августа 2010

У меня есть несколько HierarchicalDataTemplates в моем TreeView.В одном из них я хотел бы отобразить изображение справа от метки, если свойство в этом случае HasMissingFit имеет значение true, в противном случае изображение не должно отображаться вообще.

Если бы я хотел изображениечтобы всегда присутствовать, я знаю, что мог бы сделать это, используя только тег Image с конвертером, но опять же, если свойство имеет значение false, изображение вообще не должно отображаться.

Ответы [ 5 ]

2 голосов
/ 27 августа 2010

Вам определенно не нужно кодировать преобразователь значений или селектор шаблонов: просто установите Image s Visibility на Collapsed, а затем прикрепите стиль к Image, который использует DataTrigger, например:

<Style TargetType="Image">       
   <Style.Triggers>
      <DataTrigger Binding="{Binding HasMissingFit}" Value="True">
         <DataTrigger.Setters>
            <Setter Property="Visibility" Value="Visible"/>
         </DataTrigger.Setters>
      </DataTrigger>
   </Style.Triggers>
</Style>

В зависимости от вашего макета, может иметь смысл установить Visibility на Hidden, чем Collapsed;таким образом, изображение, появляющееся или исчезающее, не повлияет на ход макета.

2 голосов
/ 27 августа 2010

Самый простой способ, вероятно, состоит в том, чтобы просто связать свойство видимости изображения с HasMissingFit, используя конвертер для преобразования истинного значения в видимое и ложного в скрытое (или свернутое, если вы хотите использовать это пространство для чего-то другого). Если вы хотите, чтобы изображение действительно отсутствовало, вам нужно создать триггер в некотором родителе изображения. Определите ContentControl с пользовательским стилем и в стиле определите триггер, который устанавливает ваше изображение как Content, если HasMissingFit == True.

1 голос
/ 27 августа 2010

Относительно конвертера для свернутого / видимого изображения, вы также можете сделать конвертер, который преобразует true в ваш источник изображения или false в ноль

1 голос
/ 27 августа 2010

Есть несколько вариантов, о которых я могу подумать:

  1. Вы можете связать это свойство с видимостью изображения.В этом случае изображение существует, но не отображается на экране.
  2. Вы можете создать DataTemplateSelector, который выбирает правильный DataTemplate на основе этого свойства.
0 голосов
/ 27 августа 2010

Первое, что мне пришло в голову, это использовать Image, привязанный к свойству, которое возвращает либо изображение, которое вы хотите, если другое свойство установлено, либо null в противном случае.

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

В коде позади:

public ImageSource MyImage
{
    get
    {
        if (this.IsImageFit)
            return .....;   // return an ImageSource using your image
        else
            return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...