Binding 表达式混合交互:如何设置触发器以查找按钮的IsEnabled值?
我是一名使用Expression Blend 4的设计师,我们的环境是.NET 3.5 这个问题对你们来说可能很简单,但它给我带来了一个相当大的问题 我需要对一个按钮应用一个交互,当按钮被启用时,它将触发一个状态 在按钮上,开发人员有一个与IsEnabled属性关联的布尔值。我必须为EventTrigger提供一个EventName,我唯一能想到的就是IsEnabledChanged。但是,当我运行应用程序时,这没有任何作用 如何告诉触发器在按钮的IsEnabled属性的布尔值中查找更改 代码如下:Binding 表达式混合交互:如何设置触发器以查找按钮的IsEnabled值?,binding,triggers,expression-blend,eventtrigger,Binding,Triggers,Expression Blend,Eventtrigger,我是一名使用Expression Blend 4的设计师,我们的环境是.NET 3.5 这个问题对你们来说可能很简单,但它给我带来了一个相当大的问题 我需要对一个按钮应用一个交互,当按钮被启用时,它将触发一个状态 在按钮上,开发人员有一个与IsEnabled属性关联的布尔值。我必须为EventTrigger提供一个EventName,我唯一能想到的就是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>
<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>
我找到了解决问题的方法 我将一个
ContentControl
包装在Border
元素周围,我试图根据布尔值使该元素出现/消失(我这样做是为了修改ControlTemplate
,Border
元素没有与其关联的ControlTemplate
)
然后我将ContentControl
的IsEnabled
属性绑定到开发人员拥有的同一个bool。我修改了ContentControl
的ControlTemplate
,使其具有一个触发器,当布尔值更改时触发该触发器
代码如下:
<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>
<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>
这个解决方案非常有效。我只是想和你分享