具有自定义DependencyProperty的MultiDataTrigger

时间:2015-02-14 14:00:39

标签: c# wpf mvvm binding triggers

我有MultiDataTrigger。我可以绑定到控件DependencyProperty(DP)和这样的视图模型属性

<Style.Triggers>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="True"/>
            <Condition Binding="{Binding PerformTextSearchesInCommentary}" Value="True"/>
        </MultiDataTrigger.Conditions>
        <MultiDataTrigger.Setters>
            <Setter Property="Background" Value="LightGray"/>
        </MultiDataTrigger.Setters>
    </MultiDataTrigger>
</Style.Triggers>

大。但现在,我想使用我自己的自定义DP“HasTextMatch”,它是在静态类中定义的。我可以使用像

这样的标准触发器来完成此操作
<Style.Triggers>
    <Trigger Property="Helpers:DataGridTextSearch.HasTextMatch" Value="True">
        <Setter Property="Background" Value="LightGray"/>
    </Trigger>
</Style.Triggers>

但我现在想要包含另一个属性。我试过了

<Style.Triggers>
    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <!--<Condition Property="Helpers:DataGridTextSearch.HasTextMatch" Value="True"/>--> This obviously won't work.
            <Condition Binding="{Binding Helpers:DataGridTextSearch.HasTextMatch, RelativeSource={RelativeSource Self}}" Value="True"/>
            <Condition Binding="{Binding PerformTextSearchesInCommentary}" Value="True"/>
        </MultiDataTrigger.Conditions>
        <MultiDataTrigger.Setters>
            <Setter Property="Background" Value="LightGray"/>
        </MultiDataTrigger.Setters>
    </MultiDataTrigger>
</Style.Triggers>

但这不起作用。我已经搜索过,但似乎无法找到如何做到这一点。如何将绑定到我的自定义DP?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

DataGridTextSearch.HasTextMatch属性是附属属性。请使用以下Condition

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=(Helpers:DataGridTextSearch.HasTextMatch), RelativeSource={RelativeSource Self}}>
        ...

有关属性路径(包括附加属性)的其他信息,请访问:PropertyPath XAML Syntax, MSDN