图像元素的DataTriger样式设置器

时间:2017-01-19 14:04:58

标签: wpf image xaml margin datatrigger

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

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

这很有效,除了边缘应用于布局而不管什么(对于空图像看起来不好)。我想我会做一个DataTrigger而只是应用边距是路径不是空的,但是:

  • 图片似乎没有样式(实际上它确实如此,忽略此部分)
  • 我不知道如何测试&#34;字符串不是空的&#34;。

我想做的事情就像下面的伪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>

我应该使用完全不同的方法吗?

1 个答案:

答案 0 :(得分:1)

通过为值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>