16

假设绑定是正确的并且图像文件在它们应该在的位置,任何人都可以发现为什么当触发器评估为 true 时下面的 xaml 中的图像不会改变?

干杯,
贝里尔

<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>
4

1 回答 1

46

尝试以下...

  • 在样式上设置 TargetType="{x:Type Image}"
  • 将 setter 的属性更改为 Property="Source"

当前定义属性路径的方式是在 Image 上查找名为 Image 的属性(不存在),然后在名为 Source 的内容中查找。

此外,从顶部的 Image 标记中删除 Source 属性。这将覆盖样式应用的任何内容。您可以将其移动到另一个 DataTrigger 或者您可以将其放入普通的 setter 中,如下所示:

<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>
于 2010-03-10T03:42:28.023 回答