我使用的Expression Blend 4设计师和我们的环境是.NET 3.5。
这个问题可能是简单的你们,却是令我相当有问题。
我需要的交互应用到按钮时,该按钮会变为启用,这将触发状态。
在按钮,开发人员必须与IsEnabled属性相关联的布尔值。 我要与事件名称供应EventTrigger,那我能想到的唯一的事情就是IsEnabledChanged。 然而,当我运行的应用程序,这什么也不做。
我如何告诉触发以寻找按钮的IsEnabled属性的布尔值的变化?
下面是代码:
<Button x:Name="SaveButton"
Command="{Binding SaveCommand}"
IsEnabled="{Binding IsSaveAllowedBool}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="IsEnabledChanged">
<ic:GoToStateAction StateName="MyState"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
我发现了一个解决我的问题。
我包裹ContentControl
的左右Border
元素,我试图让显示/基础上,布尔值消失(我这样做是为了修改ControlTemplate
-在Border
元素不具备ControlTemplate
与之相关联)
然后我约束IsEnabled
的财产ContentControl
相同的布尔开发商了。 我修改了ControlTemplate
中的ContentControl
有一个Trigger
时,布尔值改变,将触发。
下面是代码:
<Style x:Key="MyContentControl" TargetType="{x:Type ContentControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContentControl}">
<ContentPresenter/>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ContentControl Style="{DynamicResource MyContentControl}"
IsEnabled="{Binding IsSaveAllowedBool}">
<!-- ALL MY CONTENT -->
</ContentControl>
该解决方案完美地工作。 只是想我会分享。
文章来源: Expression Blend Interaction: How to set Trigger to Look for IsEnabled Value of Button?