1
我有一個關於澄清WPF中的數據上下文的問題。我有一個基於PRISM的應用程序。我試圖把一個DataTrigger放在一個Button控件上。此按鈕控件被配置爲使用PRISM命令解釋器。WPF DataTrigger和使用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時,trigers不會運行。如果我刪除PRISM命令語法(並鉤入標準的按鈕單擊事件)並進行測試,則會觸發觸發器。
我想知道的是爲什麼PRISM命令處理程序[語法]會導致觸發器不使用Trigger腳本中標識的DataContext?
進入另一種情況,我將綁定腳本放在按鈕上。綁定屬性是一個依賴屬性,應該由按鈕拾取。它沒有。此按鈕上還有一個PRISM命令處理程序。當我移除它時,綁定的屬性在更改時被捕獲。有趣的是,我在同一個控件上有另一個綁定屬性。它會被PRISM命令綁定激活。兩個綁定的屬性在視圖的數據上下文所附帶的ViewModel中定義。唯一的區別是第二個使用轉換器。彼得 –