WPF触发器更改光标

Kam*_*eko 6 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>
Run Code Online (Sandbox Code Playgroud)

给出了什么,以及我该如何正确地做到这一点?

Ste*_*pel 4

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

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

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

但有一个重要的细节:光标仅在直接悬停在标题上方时出现,即不是行(这与 WPF TreeViewItem 行行为一致,请参阅此处有关行突出显示的相关示例)。特别是当TeeViewItem header为空时光标不会出现!您是否已提供标题的任何数据?

否则,他们一定是在您的项目/环境的幕后发生了一些奇怪的事情?您是否已经尝试过像这样的简单重现案例?