0

編集可能なルート 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>

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() };
}

しかし、私には2つの問題があります:

1) このコードは TextBlock のヘッダーを変更しません

2) この XAML は、すべての項目にイベントを設定します。ルート項目のみを編集したい...

手伝ってくれてありがとう!

4

2 に答える 2

0

TreeViewを使用して、子ノードとは異なる方法で親ノードのスタイルを設定できますHierarchicalDataTemplate。この方法を使用すると、子のみのノードではなく、各親ノードにイベント ハンドラーを追加できます。詳細については、MSDN のこのページを参照してください

于 2013-07-22T15:48:13.137 に答える
0

1)編集部分と保存部分を処理するには2つのイベントが必要です....編集部分に保存するためのコードを記述しました。OnTreeViewSelectedItemChanged を使用して、アイテムが変更されたときにパーツをキャプチャします。
このリンクを確認してくださいCreate Event Handler for TreeViewItem in WPF
2) root とはどういう意味ですか?最上位のノードまたは子を持つノードのみですか?

于 2013-07-20T22:14:50.550 に答える