WPF触发器更改光标

时间:2009-07-15 18:04:55

标签: wpf triggers cursor

我需要在触发器中更改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 个答案:

答案 0 :(得分:4)

你正确地做,它应该工作。事实上,我无法通过以下步骤重现您的问题:

  • 通过VS 2008 C#WPF应用程序向导创建了一个新项目。
    • 产生App.xaml和Window1.xaml
  • 从工具箱向Window1添加了标准TreeView。
  • 添加了2个TreeViewItems'1'和'2'。
  • 添加了TargetType="TreeViewItem"
  • 样式
  • 按原样粘贴您的代码段,但当然将条件修改为本地代码。

嗯,这只是工作正常,即一旦悬停在TreeViewItem上,光标就会被触发到我在触发器中选择的任何值,无论是“手”还是“等待”或者其他。

一个重要的细节是:光标只在直接悬停在标题上时出现,即整行(这与WPF TreeViewItem行行为一致,请参阅here表示关于行突出显示的相关示例)。特别是当TeeViewItem标头为空时光标会显示!您是否提供了标题的任何数据?

否则他们的项目/环境幕后必定是奇怪的事情?你有没有试过这样一个简单的repro案例?