WPF:条件绑定与属性,XamlParseException使用

WPF:条件绑定与属性,XamlParseException使用,wpf,xaml,binding,triggers,multitrigger,Wpf,Xaml,Binding,Triggers,Multitrigger,对于多触发器,我的状况有问题。如果我这样做: <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}}" Property="IsEnabled" Value="True"/> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Typ

对于
多触发器
,我的
状况有问题。如果我这样做:

<Condition Binding="{Binding RelativeSource={RelativeSource
    AncestorType={x:Type ListView}}}" Property="IsEnabled" Value="True"/>
<Condition Binding="{Binding RelativeSource={RelativeSource
    AncestorType={x:Type ListView}}, Path=IsEnabled}" Value="True"/>

然后我得到一个例外:

条件不能同时使用属性和绑定。标记文件中对象“System.Windows.Condition”处出错

但是,当我执行以下操作时:

<Condition Binding="{Binding RelativeSource={RelativeSource
    AncestorType={x:Type ListView}}}" Property="IsEnabled" Value="True"/>
<Condition Binding="{Binding RelativeSource={RelativeSource
    AncestorType={x:Type ListView}}, Path=IsEnabled}" Value="True"/>

然后我得到一个例外:

必须为触发器指定属性和值。标记文件中对象“System.Windows.Condition”处出错

有什么好处?如果重要的话,这里是整个触发点:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Binding="{Binding Path=IsSelected}" Value="True"/>
        <Condition Binding="{Binding Path=ItemsControl.AlternationIndex}"
                   Value="0"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource
            AncestorType={x:Type ListView}}, Path=IsEnabled}"
                   Value="True"/>
    </MultiTrigger.Conditions>
    <Setter Property="Background"
            Value="{StaticResource evenSelected}" />
    <Setter Property="BorderBrush"
            Value="{StaticResource evenSelectedBorder}" />
</MultiTrigger>

本例中的API令人困惑<代码>条件
用于两种不同类型的多触发器,并且使用的属性不同。使用
multi-trigger
时,您将使用
属性
属性。使用
MultiDataTrigger
(这是您需要的)时,可以指定
绑定
。因此,如果您只需将代码切换为使用
多数据触发器
,您就可以:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=IsSelected}" Value="True"/>
        <Condition Binding="{Binding Path=ItemsControl.AlternationIndex}"
                   Value="0"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource
            AncestorType={x:Type ListView}}, Path=IsEnabled}"
                   Value="True"/>
    </MultiDataTrigger.Conditions>
    <Setter Property="Background"
            Value="{StaticResource evenSelected}" />
    <Setter Property="BorderBrush"
            Value="{StaticResource evenSelectedBorder}" />
</MultiDataTrigger>

太好了,谢谢!我不再获得
XamlParseException
,尽管我必须没有正确的最后一个
条件
,因为我的设置器不再对启用的
ListView
项工作。