2011-08-16 2 views
1

私はExpression Blend 4を使用するデザイナーであり、私たちの環境は.NET 3.5です。Expression Blend Interaction:ボタンのIsEnabled値を探すためのトリガーの設定方法?

この問題は皆さんにとっては簡単かもしれませんが、それは私に大きな問題を引き起こしています。

ボタンが有効になったときに状態をトリガーするボタンに対話を適用する必要があります。

ボタンの開発者は、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> 

答えて

2

私は私の問題への解決策を見つけました。

私は(私はControlTemplateを修正するために、これをしなかった - Border要素は、それに関連付けられているControlTemplateを持っていません)私はブール値に基づいて消える/表示されるようにしようとしていますBorder要素の周りContentControlを包ん

次にContentControlIsEnabledプロパティを開発者が持っていた同じ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> 

このソリューションは、完全に働きました。ちょうど私が共有すると思った。

関連する問題