2009-07-15 17 views
6

Potrzebuję zmienić kursor elementu TreeViewItem w wyzwalaczu. Ten kod działa dla wszystkich innych właściwości, ale nie dla kursora:WPF Trigger, aby zmienić kursor

<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> 

Co daje, a także, jak zrobić to poprawnie?

Odpowiedz

4

Robisz to poprawnie, powinno po prostu działać. W rzeczywistości nie mogę odtworzyć problemu, wykonując następujące czynności:

  • Utworzono nowy projekt za pomocą kreatora aplikacji VS 2008 C# WPF.
    • powodując App.xaml i Window1.xaml
  • dodano standardowy TreeView z zestawu narzędzi na oknie Window1.
  • Dodano 2 TreeViewItems "1" i "2".
  • Dodano styl z TargetType="TreeViewItem".
  • Wkleiłem twój fragment, jak jest, ale oczywiście zmieniono warunki na coś lokalnego.

Cóż, to działa bez zarzutu, tj. Po najechaniu kursorem na obiekt TreeViewItem kursor zostanie wywołany z dowolną wartością wybraną przez wyzwalacz, np. "Hand" lub "Wait" lub inaczej.

Jednym z ważnych szczegółów choć: kursor pojawia się tylko wtedy, gdy unosi się bezpośrednio na cel, to niecały rząd (to jest zgodne z zachowaniem rzędu WPF TreeViewItem jednak zobaczyć here do pokrewnego rodzaju opisanego rzędu podświetlania). Zwłaszcza kursor ma nie pojawia się, gdy nagłówek TeeViewItem jest pusty! Czy dostarczyłeś już jakieś dane do nagłówków?

W przeciwnym razie musi być coś dziwnego dzieje się za kulisami w projekcie/środowisku? Czy wypróbowałeś już taki prosty przypadek repro?

Powiązane problemy