WPF UserControl和ICommand

时间:2011-09-13 17:33:45

标签: wpf triggers icommand canexecute

我创建了一个UserControl,里面有一个按钮,也有按钮的样式。样式设置鼠标悬停触发时的按钮背景。现在我添加了一个ICommand类型的依赖项属性,并将button命令设置为这个新属性。命令绑定正常工作但是当禁用自定义控件时(canexecute = false),鼠标悬停触发器仍然会更改背景。

我已尝试将鼠标改为触发器,但这样做不起作用:

<MultiTrigger.Conditions>
    <Condition Property="IsMouseOver" Value="True"/>
    <Condition Property="IsEnabled" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Orange"/>
</MultiTrigger>

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我认为在Condition中引用的IsEnabled属性是Control的属性,而不是Button。因此控制已启用,这就是触发条件为真的原因。要访问该按钮,您可以尝试使用Relative Source标记扩展 您可以尝试以下方式:

<Condition Binding="{Binding RelativeSource={RelativeSource
                                 AncestorType={x:Type Button}},
                             Path=IsEnabled}"
           Value="True"/>