2009-07-15 66 views
6

我需要在觸發器中更改TreeViewItem的光標。此代碼適用於所有其他屬性而不是光標:WPF觸發器更改光標

<Style.Triggers> 
    <MultiTrigger> 
    <MultiTrigger.Conditions> 
     <Condition Property="QuickPhrases:TreeViewChecker.IsMouseDirectlyOverItem"  
        Value="True"> 
     </Condition> 
     <Condition Property="CanSelect" Value="True"></Condition> 
     </MultiTrigger.Conditions> 
     <Setter Property="BorderThickness" Value="0,0,0,1" /> 
     <Setter Property="BorderBrush" Value="Blue" /> 
     <Setter Property="Cursor" Value="Hand"></Setter> 
     <Setter Property="Foreground" Value="Blue"></Setter> 
    </MultiTrigger> 
</Style.Triggers> 

是什麼給了,而且,我怎麼做是正確的?

回答

4

你正在做的正確,它應該工作。事實上,我無法通過以下步驟重現您的問題:

  • 通過VS 2008 C#WPF應用程序嚮導創建了一個新項目。
    • 導致的App.xaml和Window1.xaml
  • 添加了一個標準的TreeView從工具箱Window1中。
  • 增加了2個TreeViewItems'1'和'2'。
  • 增加了一個樣式與TargetType="TreeViewItem"
  • 粘貼您的代碼片段,但修改條件當地的東西。

嗯,這只是工作正常,即一旦懸停在TreeViewItem上游標觸發到我在觸發器中選擇的任何值,無論是'手'或'等'或其他。

一個重要的細節雖然:光標而直接懸停在報頭,只出現即整行(這是與WPF的TreeViewItem行行爲一致雖然,參見here用於與行突出顯示相關的示例)。特別是當TeeViewItem頭爲空時,光標確實出現而不是!你是否提供了標題的任何數據?

否則他們一定是在你的項目/環境幕後出現的奇怪現象?你已經嘗試過這樣一個簡單的repro案例嗎?