MultiTrigger:条件绑定到DependencyProperty不起作用

Tor*_*enJ 5 c# wpf dependency-properties multitrigger

我有一个MainMenuButton类型的自定义按钮UserControl和atm我正在设计它.现在我想实现一个MultiTrigger只在满足两个条件时才改变按钮的外观.

第一个条件是if IsMouseOver == true.我简单地说如下Condition:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <Setter TargetName="LayoutRoot" Property="Background" Value="Red">
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <Setter TargetName="LayoutRoot" Property="Background" Value="Black">
    </MultiTrigger.ExitActions>
</MultiTrigger>
Run Code Online (Sandbox Code Playgroud)

第二个条件与a DependencyProperty:

public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(MainMenuButton), new PropertyMetadata(false));
Run Code Online (Sandbox Code Playgroud)

在另一个SO帖子中,用户说我可以DataTrigger用来做出反应IsCheckedProperty.所以我尝试了其他帖子的代码,但它不起作用:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsChecked}" Value="False"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource MouseEnter}"/>
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource MouseLeave}"/>
    </MultiTrigger.ExitActions>
</MultiTrigger>
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题?谢谢你的回答!:)

Tor*_*enJ 10

让它在同一时间工作.我偶然发现了这篇包含有效工作解决方案的博客文章:http: //anders.janmyr.com/search?q = multidatatrigger

将我的代码更改为以下内容:

<MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsChecked}" Value="True"/>
                </MultiDataTrigger.Conditions>
                <Setter TargetName="LayoutRoot" Property="Background" Value="Red"/>
            </MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)

现在它有效.无论如何,感谢所有回答者的努力!