简体   繁体   English

C#可编辑TreeViewItem

[英]C# Editable TreeViewItem

I want editable root TreeViewItem, for that I create Event 我想要可编辑的根TreeViewItem,为此我创建了Event

      <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>

In C#: 在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() };
}

But I have two problems: 但是我有两个问题:

1) This code doesn't change Header on TextBlock 1)此代码不会更改TextBlock上的Header

2) This XAML set Event on all Items, I want edit only root items... 2)此XAML对所有项目都设置了事件,我只想编辑根项目...

Thanks for help! 感谢帮助!

1) You require 2 events to handle the edit and save part .... you have written the code for saving in the edit part . 1)您需要2个事件来处理编辑和保存部分....您已编写了保存在编辑部分中的代码。 use OnTreeViewSelectedItemChanged to capture the part when the item is changed. 更改项目时,使用OnTreeViewSelectedItemChanged捕获零件。
Please check this link Create Event Handler for TreeViewItem in WPF 请检查此链接在WPF中为TreeViewItem创建事件处理程序
2) What do you mean by root , only the topmost node or node which has children? 2)root是什么意思,只有最顶层的节点或具有子节点的节点?

You can style parent nodes in a TreeView differently than child nodes using a HierarchicalDataTemplate . 您可以使用HierarchicalDataTemplateTreeView为父节点设置样式,而与子节点样式不同。 Using this method, you can add your event handlers to each parent node and not the child only nodes. 使用此方法,可以将事件处理程序添加到每个父节点,而不是仅子节点。 You can find out more from this page on MSDN . 您可以从MSDN上的此页面中找到更多信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM