【问题标题】:DataTriger Style Setter for Image Element图像元素的 DataTrigger 样式设置器
【发布时间】:2017-06-04 06:22:55
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么那个奇怪的绑定路径语法带有一个前导句点,Path=Screenshot 可以工作?
  • 只是残留物。代码来自 CustomControl,用于 ListBox
  • “图像似乎没有样式”——对我来说似乎是这样。你有什么相反的看法?这绝对是 WPF 吗?
  • 见下方评论,这是用户错误。编辑问题。

标签: wpf image xaml margin datatrigger


【解决方案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>

【讨论】:

  • 谢谢。这应该有助于字符串检测。还需要知道如何实际设置图像的样式,因为 Image 实际上没有 .Style(见上文)。
  • 再看一遍,那部分是我的用户错误。我仍然有尾部斜杠立即关闭我的图像(由 CoolBlue 在上面的编辑中更正),这导致“不存在或不可访问”编译错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多