在MultiDataTrigger中组合DataTrigger和Trigger

Car*_*arl 22 data-binding wpf xaml triggers

我从一些例子中看到,可以结合这种触发器:

<Trigger Property="IsMouseOver" Value="True">
Run Code Online (Sandbox Code Playgroud)

有了这种数据触发器:

<DataTrigger Binding="{Binding IsHighlightable}" Value="True" />
Run Code Online (Sandbox Code Playgroud)

通过使用这样的MultiDataTrigger:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
        <Condition Binding="{Binding IsHighlightable}" Value="True" />
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="#BF6DBDD1"/>
        <Setter Property="Background" Value="{StaticResource SelectedItemBackgroundBrush}"/>
    </MultiDataTrigger.Setters>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于附加属性.此触发器有效:

<Trigger Property="UI:TreeViewHelper.IsMouseDirectlyOverItem" Value="True">
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=UI:TreeViewHelper.IsMouseDirectlyOverItem}" Value="True"/>
        <Condition Binding="{Binding IsHighlightable}" Value="True" />
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="#BF6DBDD1"/>
        <Setter Property="Background" Value="{StaticResource SelectedItemBackgroundBrush}"/>
    </MultiDataTrigger.Setters>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)

有没有办法让触发器在MultiDataTrigger中正常工作?IsMouseDirectlyOverItem属性取自http://blogs.msdn.com/b/mikehillberg/archive/2006/09/21/mytreeviewhelperismousedirectlyoveritem.aspx.

谢谢

H.B*_*.B. 8

附加属性的语法不同:

Path=(UI:TreeViewHelper.IsMouseDirectlyOverItem)
Run Code Online (Sandbox Code Playgroud)


B.B*_*dan 6

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding IsHighlightable}" Value="True"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="#BF6DBDD1"/>
        <Setter Property="Background" Value="{StaticResource SelectedItemBackgroundBrush}"/>
    </MultiDataTrigger.Setters>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)