必须具有非空值才能“绑定”'

时间:2018-04-10 20:58:47

标签: wpf xaml

我尝试使用特殊绑定进行比较here并在另一个问题上推荐。 NEQ是一个添加的运算符,只会给出EQ的相反结果。每次都会发出InvalidOperationException消息"必须为' Binding'"

提供非空值。

在测试条件下,我尝试将语句简化为{Binding SourceExpanded},甚至抛出相同的异常。

SourceSourceExpandedSourceCollapsed都是与此样式相关联的类中定义的依赖项属性。

问题是,您是否可以绑定到具有空值的依赖项属性?如果是这样,为什么属性值不允许为空?

<Style.Triggers>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Property="IsExpanded" Value="True"/>
            <Condition Binding="{local:ComparisonBinding SourceCollapsed, NEQ, {x:Null}}" Value="{x:Null}"/>
        </MultiDataTrigger.Conditions>
        <Setter Property="Source" Value="{Binding SourceExpanded}"/>
    </MultiDataTrigger>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Property="IsExpanded" Value="False"/>
            <Condition Binding="{local:ComparisonBinding SourceCollapsed, NEQ, {x:Null}}" Value="{x:Null}"/>
        </MultiDataTrigger.Conditions>
        <Setter Property="Source" Value="{Binding SourceCollapsed}"/>
    </MultiDataTrigger>
</Style.Triggers>

2 个答案:

答案 0 :(得分:0)

我知道这有点晚了,您一定已经解决了您的问题,如果没有,这里是解决问题的方法。

您需要更改 <Condition Property="IsExpanded" Value="True"/><Condition Binding="{Binding IsExpanded, RelativeSource={RelativeSource Self}}" Value="True" />

答案 1 :(得分:0)

基于 Ray'sthis 答案:对于 url = "https://username:password@yoururl.com" driver.get(url) MultiDataTrigger 元素,使用显式 Condition 而不是 Binding,并定义一个如果为 null,则使用 Property 的默认值。代码如下:

TargetNullValue