我有一个绑定到简单节点的树形视图,每个节点包含两个字符串(Expression,Exp2)和一个节点列表(子级)。
我也做到了,这样当双击一个特定的文本框时,它会引发一个给我TreeViewItem的事件。
如何从那里到达制作TreeViewItem的节点?
<TreeView x:Name="treeView" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,80,20,20">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Node}"
ItemsSource="{Binding Children}">
<Grid>
<TextBlock Text="{Binding Expression}"/>
<!--<TextBlock Text="{Binding Exp2}"/>-->
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="TreeViewItem_MouseDoubleClick"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if(sender is TreeViewItem)
{
if (!((TreeViewItem)sender).IsSelected)
{
return;
}
TreeViewItem item = (TreeViewItem)sender;
//???
//Profit
}
}
答案 0 :(得分:1)
好,这很复杂。
获取TreeViewItem的父项(作为ItemsControl
)
var parent = ItemsControl.ItemsControlFromItemContainer(item);
然后使用父级的ItemContainerGenerator
获取如下数据:
var node = parent?.ItemContainerGenerator?.ItemFromContainer(item);