0

我想要可编辑的根 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 上的 Header

2)这个XAML在所有项目上设置事件,我只想编辑根项目......

感谢帮助!

4

2 回答 2

0

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

于 2013-07-20T22:14:50.550 回答
0

TreeView您可以使用不同于子节点的样式设置父节点的样式HierarchicalDataTemplate。使用此方法,您可以将事件处理程序添加到每个父节点,而不是子节点。您可以从MSDN 上的此页面了解更多信息。

于 2013-07-22T15:48:13.137 回答