Binding 表达式混合交互:如何设置触发器以查找按钮的IsEnabled值?

Binding 表达式混合交互:如何设置触发器以查找按钮的IsEnabled值?,binding,triggers,expression-blend,eventtrigger,Binding,Triggers,Expression Blend,Eventtrigger,我是一名使用Expression Blend 4的设计师,我们的环境是.NET 3.5 这个问题对你们来说可能很简单,但它给我带来了一个相当大的问题 我需要对一个按钮应用一个交互,当按钮被启用时,它将触发一个状态 在按钮上,开发人员有一个与IsEnabled属性关联的布尔值。我必须为EventTrigger提供一个EventName,我唯一能想到的就是IsEnabledChanged。但是,当我运行应用程序时,这没有任何作用 如何告诉触发器在按钮的IsEnabled属性的布尔值中查找更改 代码如

我是一名使用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>

这个解决方案非常有效。我只是想和你分享