Expression Blend的互动:如何设置触发,以寻找巴顿的IsEnabled值?(Expre

2019-09-27 08:27发布

我使用的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>

Answer 1:

我发现了一个解决我的问题。

我包裹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?