1

我有一个关于澄清 WPF 中的数据上下文的问题。我有一个基于棱镜的应用程序。我正在尝试将 DataTrigger 放在 Button 控件上。此 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 将使用指定的 elementName 作为触发器的 Datacontext。当我测试这个 XAML 时,触发器不会运行。如果我删除 PRISM 命令语法(并挂钩到标准按钮单击事件)并进行测试,那么触发器就会触发。

我想知道的是为什么 PRISM 命令处理程序 [syntax] 会导致触发器不使用触发器脚本中标识的 DataContext?

4

1 回答 1

0

在命令定义中,您是否设置 CanExecute ?

我可能错了,但是因为 IsEnabled 绑定到其命令的 CanExecute,它可能会阻止触发器工作。

于 2013-05-21T14:43:09.570 回答