WPF.对于多重触发条件,"属性"必须具有非空值

nel*_*y2k 29 c# wpf xaml

有multitrigger,其中一个条件不为null,所以如果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>
Run Code Online (Sandbox Code Playgroud)

使用简单转换器:

return isNull == null;
Run Code Online (Sandbox Code Playgroud)

错误是 必须具有Property的非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>
Run Code Online (Sandbox Code Playgroud)

小智 36

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

  • 反之亦然,如果在DP上触发,你只能使用`MultiTrigger`. (4认同)