6

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

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

4

1 回答 1

4

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

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

好吧,这很好用,即一旦将鼠标悬停在 TreeViewItem 上,光标就会触发到我在触发器中选择的任何值,无论是“Hand”还是“Wait”。

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

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

于 2009-07-15T21:57:31.607 回答