我有一个 TreeView
,其中包含许多 TreeViewItems
。每个 TreeViewItem
都包含一个水平方向的 StackPanel
,后者又包含一个图像和一个标签。
当用户单击 TreeViewItem 时,我想获取该 TreeViewItem
的引用。相反,源将作为标签或图像返回,具体取决于用户单击 TreeViewItem
的哪一部分。
我无法使用 selectedItemChanged 事件,因为这严格来说是每次单击 TreeViewItem 时都必须发生的操作。
这是我的 XAML:
<TreeView DockPanel.Dock="Left"
Name="tvSchema"
AllowDrop="True"
TreeViewItem.PreviewMouseLeftButtonDown="tvSchema_PreviewMouseLeftButtonDown">
</TreeView>
下面是当用户单击某个 TreeViewItem 时尝试检索所选 TreeViewItem 的代码:
private void tvSchema_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
object x = e.OriginalSource; //Returns TextBlock
object y = e.Source; //Returns Label
object z = sender; //Returns TreeView
}
如何获取实际的 TreeViewItem?
最佳答案
尝试这样的事情:
<TreeView>
<TreeView.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter
Event="TreeViewItem.PreviewMouseLeftButtonDown"
Handler="MyHandler"/>
</Style>
</TreeView.Resrouces>
...
</TreeView>
在MyHandler
中,sender
将是TreeViewItem
。
关于c# - 单击时如何检索控件的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266624/