Image 元素的 DataTrigger 样式 Setter

DataTriger Style Setter for Image Element

我有一个通过数据绑定填充的图像元素 - 如果绑定 returns 路径,则会绘制图像。如果不是(路径是一个空字符串),我们就没有图像。

<Image Source="{Binding Path=.Screenshot, Mode=OneWay}" Stretch="Fill"  Margin="5,5,5,5" />

效果很好,除了边距无论如何都会应用于布局(这对于空图像来说看起来很糟糕)。我想我会做一个 DataTrigger 而不是只应用边距是路径不为空,但是:

我想做的是类似于下面的伪XAML。这在 XAML 中可能吗?

<Image Source="{Binding Path=.Screenshot, Mode=OneWay}" Stretch="Fill" >
<Image.Style>
    <Style TargetType="Image">
        <Setter Property="Margin" Value="0,0,0,0" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=.Screenshot}" Value="!NullOrEmpty">
                <Setter Property="Margin" Value="5,5,5,5" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Image.Style>

我是否应该为此使用完全不同的方法?

相反,通过为值 null"":

使用 DataTrigger
<Style TargetType="Image">
    <Setter Property="Margin" Value="5,5,5,5" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Screenshot}" Value="{x:Null}">
            <Setter Property="Margin" Value="0,0,0,0" />
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=Screenshot}" Value="">
            <Setter Property="Margin" Value="0,0,0,0" />
        </DataTrigger>
    </Style.Triggers>
</Style>

您可能还只是在图像 Source 属性:

上有一个触发器
<Style TargetType="Image">
    <Setter Property="Margin" Value="5,5,5,5" />
    <Style.Triggers>
        <Trigger Property="Source" Value="{x:Null}">
            <Setter Property="Margin" Value="0,0,0,0" />
        </Trigger>
    </Style.Triggers>
</Style>