1

WPF でのデータ コンテキストの明確化について質問があります。PRISM ベースのアプリケーションがあります。Button コントロールに DataTrigger を配置しようとしています。この Button コントロールは、PRISM コマンド インタープリターを使用するように構成されています。

<Button 
   Grid.Column="0"                             
   Content="{Resx AdvancedTroubleShootingButtonLabel}" 
   prism:Click.Command="{Binding AdvancedTroubleShootingCommand}"
 >
   <Button.Resources>
     <Style 
       TargetType="{x:Type Button}"  BasedOn="{StaticResource CDMWrappedButtonStyle}">

       <Style.Triggers>

         <DataTrigger Binding="{Binding Path=SizerVisible, ElementName=SecuritySizer}" Value="False" >
            <Setter Property="Button.IsEnabled" Value="True" />
         </DataTrigger>

         <DataTrigger Binding="{Binding Path=SizerVisible, ElementName=SecuritySizer}" Value="True" >
           <Setter Property="Button.IsEnabled" Value="False" />
         </DataTrigger>
       </Style.Triggers>

     </Style>
   </Button.Resources>
</Button>

私の仮定は、DataTriggers がトリガーの Datacontext に指定された elementName を使用することでした。この XAML をテストすると、トリガーが実行されません。PRISM コマンド構文を削除して (そして標準のボタン クリック イベントにフックして) テストすると、トリガーが起動します。

私が知りたいのは、PRISM コマンド ハンドラー [構文] によってトリガーがトリガー スクリプトで識別された DataContext を使用しない理由です。

4

1 に答える 1

0

コマンド定義では、 CanExecute を設定していますか?

私は間違っているかもしれませんが、IsEnabled はそのコマンドの CanExecute にバインドされているため、トリガーが機能しなくなる可能性があります。

于 2013-05-21T14:43:09.570 に答える