2009-07-15 68 views
6

我需要在触发器中更改TreeViewItem的光标。此代码适用于所有其他属性而不是光标:WPF触发器更改光标

<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

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

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

嗯,这只是工作正常,即一旦悬停在TreeViewItem上游标触发到我在触发器中选择的任何值,无论是'手'或'等'或其他。

一个重要的细节虽然:光标而直接悬停在报头,只出现即整行(这是与WPF的TreeViewItem行行为一致虽然,参见here用于与行突出显示相关的示例)。特别是当TeeViewItem头为空时,光标确实出现而不是!你是否提供了标题的任何数据?

否则他们一定是在你的项目/环境幕后出现的奇怪现象?你已经尝试过这样一个简单的repro案例吗?