Expression Blend 交互:如何设置触发器来查找按钮的 IsEnabled 值?

发布于 2024-11-29 19:01:03 字数 674 浏览 0 评论 0原文

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

I am a designer using Expression Blend 4 and our environment is .NET 3.5.

This issue may be simple to you guys, but it is causing me quite a problem.

I need to apply an interaction to a button that will trigger a state when the button becomes enabled.

On the button, the developer has a Boolean value associated with the IsEnabled property. I have to supply the EventTrigger with an EventName, and the only thing that I can think of is IsEnabledChanged. However, when I run the app, this does nothing.

How do I tell the Trigger to look for a change in the Boolean value of the IsEnabled property of the button?

Here is the code:

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅忆流年 2024-12-06 19:01:03

我找到了解决问题的方法。

我在 Border 元素周围包裹了一个 ContentControl ,我试图根据布尔值使其出现/消失(我这样做是为了修改 ControlTemplate< /code> - Border 元素没有与之关联的 ControlTemplate

然后我绑定了 ContentControl< 的 IsEnabled 属性/code> 为相同的 bool开发商有。我修改了 ContentControlControlTemplate,使其具有一个在布尔值更改时触发的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>

这个解决方案运行得很好。只是想我会分享。

I found a solution to my problem.

I wrapped a ContentControl around the Border element that I am trying to make appear/disappear based on the Boolean value (I did this in order to modify a ControlTemplate - the Border element does not have a ControlTemplate associated with it)

Then I bound the IsEnabled property of the ContentControl to the same bool the developer had. I modified the ControlTemplate of the ContentControl to have a Trigger that would fire when the Boolean value changed.

Here is the code:

<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>

This solution worked perfectly. Just thought I'd share.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文