Joa*_*nge 3 .net c# wpf treeview
我正在尝试TreeViewItem将鼠标放在鼠标下方,但找不到方法。
目前我正在使用这个:
Layer GetItemAtLocation ( Point point )
{
HitTestResult result = VisualTreeHelper.HitTest ( this, point );
FrameworkElement element = result.VisualHit as FrameworkElement;
if ( element != null )
return element.DataContext as Layer;
return null;
}
Run Code Online (Sandbox Code Playgroud)
此方法很有用,但不会导致TreeViewItem鼠标下方。
关于如何做到这一点的任何想法?
你没有具体说明是什么导致你需要这个,这会有所帮助。
这有点讨厌,但你可以这样做:
IInputElement dropNode = tree.InputHitTest(point);
Run Code Online (Sandbox Code Playgroud)
这可能会给您一个 TextBlock,因此您必须使用 VisualTreeHelper.GetParent() 向上导航 TextBlock、ContentPresenter、Border、Grid,然后最终导航到 TreeViewItem。
这当然不是最好的方法,但它应该有效。
根据您在做什么,Mike Hillberg 的博客提供了一个在触发器中使用的附加属性方法。看这里
在他的示例中,当鼠标悬停在 TreeViewItem 上方时,他将其变为绿色。
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<Trigger Property="local:MyTreeViewHelper.IsMouseDirectlyOverItem" Value="True">
<Setter Property="Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.Resources>
Run Code Online (Sandbox Code Playgroud)
MyTreeViewHelper 类跟踪 MouseEnter/MouseLeave 事件,并提供了一个很好的属性,可以在触发器和事物中使用,就像上面的那个。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
5930 次 |
| 最近记录: |