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)
现在它有效.无论如何,感谢所有回答者的努力!
| 归档时间: |
|
| 查看次数: |
7960 次 |
| 最近记录: |