WPF Trigger для изменения курсора - PullRequest
6 голосов
/ 15 июля 2009

Мне нужно изменить курсор TreeViewItem в триггере. Этот код работает для всех других свойств, но не для Cursor:

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

Что дает, а также, как мне сделать это правильно?

1 Ответ

4 голосов
/ 16 июля 2009

Вы делаете это правильно, оно должно просто работать. На самом деле я не могу воспроизвести вашу проблему, выполнив следующие действия:

  • Создан новый проект с помощью мастера приложений WPF C 2008 VS #.
    • , что приводит к App.xaml и Window1.xaml
  • Добавлен стандартный TreeView из панели инструментов в Window1.
  • Добавлено 2 TreeViewItems '1' и '2'.
  • Добавлен стиль с TargetType="TreeViewItem".
  • Вставил ваш фрагмент как есть, но, конечно, изменил условия на что-то локальное.

Что ж, это просто работает нормально, то есть, когда вы наводите курсор мыши на TreeViewItem, курсор срабатывает на любое значение, которое я выбрал в триггере, будь то «Рука», «Ожидание» или другое.

Одна важная деталь: курсор появляется только при наведении курсора прямо на заголовок, т. Е. не всей строки (хотя это согласуется с поведением строки WPF TreeViewItem, см. здесь для связанный пример, касающийся выделения строк). В частности, курсор не появляется, когда заголовок TeeViewItem пуст! Вы уже предоставили какие-либо данные для заголовков?

Иначе, должно быть, что-то странное происходит за кулисами в вашем проекте / среде? Вы уже пробовали простой случай репродукции, подобный этому?

...