我遇到Condition
MultiTrigger
的问题。如果我执行以下操作:
<Condition Binding="{Binding RelativeSource={RelativeSource
AncestorType={x:Type ListView}}}" Property="IsEnabled" Value="True"/>
然后我得到了这个例外:
条件不能同时使用Property和Binding。标记文件
中对象'System.Windows.Condition'出错
但是,当我执行以下操作时:
<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>
答案 0 :(得分:11)
这种情况下的API令人困惑。 Condition
用于两种不同类型的多触发器,并且使用的属性不同。使用MultiTrigger
时,您将使用Property
和Value
属性。使用MultiDataTrigger
(这是您需要的)时,您需要指定Binding
和Value
。因此,如果您只是将代码切换为使用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>