wpf datatrigger на источнике изображения

Принятие привязки является правильным, и файлы изображений - то, где они shuld быть, кто-либо может определить, почему изображение в xaml ниже не изменится, когда триггер оценит к истинному?

Удачи,
Berryl

<Image Source="..\..\Images\OK.png" Grid.Column="2" Stretch="None">
    <Image.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding TimeSheet, Converter={StaticResource overQuotaConv}}" Value="True">
                    <Setter Property="Image.Source" Value="..\..\Images\Error.png"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>
13
задан Mugiwara 2 June 2018 в 01:59
поделиться

1 ответ

Попробуйте следующее...

  • Установите TargetType="{x:Type Image}" в Style
  • Измените Property сеттера на Property="Source"

Так, как сейчас определен путь к свойствам, он ищет свойство Image под названием Image (которого не существует), а затем внутри него что-то под названием Source.

Кроме того, удалите атрибут Source из верхнего тега Image. Это отменит все, что применяется стилем. Вы можете переместить его в другой DataTrigger или поместить его в обычный сеттер, как например:

<Image Grid.Column="2" Stretch="None">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
            <Setter Property="Source" Value="..\..\Images\OK.png" />
            <Style.Triggers>
                <DataTrigger Value="True" Binding="{Binding TimeSheet, Converter={StaticResource overQuotaConv}}">
                    <Setter Property="Source" Value="..\..\Images\Error.png"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

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

37
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: