我有一个关于澄清 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?