1

私は 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>
4

1 に答える 1

2

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

ブール値に基づいて表示/非表示にしようとしている要素をラップしました (a を変更するためにこれを行いましたContentControl-要素には関連付けられていません)。BorderControlTemplateBorderControlTemplate

IsEnabled次に、のプロパティをContentControl、開発者が持っていたものと同じ boolにバインドしました。の を変更して、ブール値が変更されたときに起動するControlTemplateContentControl持たせました。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>

このソリューションは完全に機能しました。共有したいと思っただけです。

于 2011-08-17T15:00:56.147 に答える