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 而不是只应用边距是路径不为空,但是:
- 图片好像没有样式(其实有,忽略这部分)
- 我不知道如何测试 "string is not empty"。
我想做的是类似于下面的伪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>
我有一个通过数据绑定填充的图像元素 - 如果绑定 returns 路径,则会绘制图像。如果不是(路径是一个空字符串),我们就没有图像。
<Image Source="{Binding Path=.Screenshot, Mode=OneWay}" Stretch="Fill" Margin="5,5,5,5" />
效果很好,除了边距无论如何都会应用于布局(这对于空图像来说看起来很糟糕)。我想我会做一个 DataTrigger 而不是只应用边距是路径不为空,但是:
- 图片好像没有样式(其实有,忽略这部分)
- 我不知道如何测试 "string is not empty"。
我想做的是类似于下面的伪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
和 ""
:
<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>