我想要可编辑的根TreeViewItem,为此我创建了事件
<TreeView Height="182" Name="infoBox_treeview" Margin="0,2,0,182" BorderBrush="#FFA5A5A5" BorderThickness="2">
<TreeViewItem Header="t1"></TreeViewItem>
<TreeViewItem Header="t2">
<TreeViewItem Header="t21"></TreeViewItem>
<TreeViewItem Header="t22"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="t3"></TreeViewItem>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="infobox_item_edit"></EventSetter>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ContextMenu>
<ContextMenu Name="infoBox_treeview_menu">
<MenuItem Header="Добавить ссылку" Name="infobox_menu_addlink" Click="infobox_menu_addlink_Click"></MenuItem>
<MenuItem Header="Удалить ссылку" Name="infobox_menu_dellink"></MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
</TreeView>
在C#中:
private void infobox_item_edit(object sender, RoutedEventArgs e)
{
var selItem=(TreeViewItem)this.infoBox_treeview.SelectedItem;
selItem.Header = new TextBlock() { Text = selItem.Header.ToString() };
}
但我有两个问题:
1)此代码不会更改TextBlock上的标题
2)此XAML在所有项目上设置事件,我只想编辑根项目...
感谢您的帮助!
答案 0 :(得分:0)
1)您需要2个事件来处理编辑和保存部分....您已编写了用于保存在编辑部分的代码。使用OnTreeViewSelectedItemChanged在项目更改时捕获零件
请查看此链接Create Event Handler for TreeViewItem in WPF
2)root是什么意思,只有最顶层的节点或有孩子的节点?
答案 1 :(得分:0)
使用TreeView
,您可以使HierarchicalDataTemplate
中的父节点与子节点不同。使用此方法,您可以将事件处理程序添加到每个父节点,而不是仅限子节点。您可以从this page on MSDN了解更多信息。