C#可编辑的TreeViewItem

时间:2013-07-20 21:35:18

标签: c# wpf treeview

我想要可编辑的根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在所有项目上设置事件,我只想编辑根项目...

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

1)您需要2个事件来处理编辑和保存部分....您已编写了用于保存在编辑部分的代码。使用OnTreeViewSelectedItemChanged在项目更改时捕获零件 请查看此链接Create Event Handler for TreeViewItem in WPF
2)root是什么意思,只有最顶层的节点或有孩子的节点?

答案 1 :(得分:0)

使用TreeView,您可以使HierarchicalDataTemplate中的父节点与子节点不同。使用此方法,您可以将事件处理程序添加到每个父节点,而不是仅限子节点。您可以从this page on MSDN了解更多信息。