c# - WPF。对于多重触发条件, 'Property' 必须具有非空值

标签 c# wpf xaml

有多重触发,条件之一不为空,所以如果 StowedAssetDetailedThumbnailViewModel != null 则设置模板

<Style.Triggers>
    <MultiTrigger>
        <MultiTrigger.Conditions>
            <Condition Property="IsSelected" Value="true" />
            <Condition Binding="{Binding Path=StowedAssetDetailedThumbnailViewModel,
                                         Converter={StaticResource isNull}}"
                       Value="False"/>
        </MultiTrigger.Conditions>
        <Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
    </MultiTrigger>
</Style.Triggers>

使用简单的转换器:

return isNull == null;

错误是 属性必须具有非空值

更新: 谢谢,最终的解决方案是

<Style.Triggers>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}"
                       Value="true" />
            <Condition Binding="{Binding Path=StowedAssetDetailedThumbnailViewModel,
                                 Converter={StaticResource isNull}}"
                                 Value="false"/>
        </MultiDataTrigger.Conditions>

        <Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
    </MultiDataTrigger>
</Style.Triggers>

最佳答案

在这种情况下,您需要使用 MultiDataTrigger。 MultiTrigger 只能由依赖属性触发。

关于c# - WPF。对于多重触发条件, 'Property' 必须具有非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084676/

相关文章:

c# - 如何在 UML 中表示 C# 属性?

c# - 使用 C# 读取 XML

wpf - 在caliburn中使用Screens和IOC的正确方法

c# - 在 WPF Viewbox 中对齐内容

silverlight - 在 Windows Phone 7 上更改 ListBox 的滚动条颜色

c# - 如何将组合框选择的项目转换为字符串

c# - 在 WPF 窗口中修改调整大小 handle 的光标 ("CanResizeWithGrip"+ "WindowStyle:none")

c# - 如果为 false,则停止在自定义验证器中执行

c# - 使用相同的 ViewModel 打开两个窗口时无法设置单选按钮值

WPF:与使用样式相比,设置属性是否具有性能和/或内存优势?