wpf图像源上的datatrigger

时间:2010-03-10 03:39:45

标签: wpf datatrigger

假设绑定是正确的并且图像文件是它们所处的位置,那么有人能够发现当触发器评估为真时下面的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>

1 个答案:

答案 0 :(得分:37)

尝试以下方法......

  • 在样式
  • 上设置TargetType =“{x:Type Image}”
  • 将setter的Property更改为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>

你的时间很有趣。我正准备在我的博客上发布一些关于控件的内容,该控件执行与此类似的操作,但语法更为简洁。

相关问题