2012-11-02 47 views
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?

+0

進入另一種情況,我將綁定腳本放在按鈕上。綁定屬性是一個依賴屬性,應該由按鈕拾取。它沒有。此按鈕上還有一個PRISM命令處理程序。當我移除它時,綁定的屬性在更改時被捕獲。有趣的是,我在同一個控件上有另一個綁定屬性。它會被PRISM命令綁定激活。兩個綁定的屬性在視圖的數據上下文所附帶的ViewModel中定義。唯一的區別是第二個使用轉換器。彼得 –

回答

0

在命令定義中,您是否設置了CanExecute?

我可能是錯的,但因爲IsEnabled綁定到其Command的CanExecute,它可能會阻止觸發器工作。