5

現在取り組んでいるアプリケーションでこれに気付いたので、デモ用に簡単なテスト アプリを作成しました。以下は、ツリービュー項目のウィンドウとイベント ハンドラーです。「One」または「Two」の親ノードを展開し、子の 1 つをクリックすると、テキスト ボックスで Focus() メソッドが呼び出された後、選択された子が選択されたように表示されません。代わりに、選択は親ノードにポップされます。これを克服する方法を知っている人はいますか?選択した子ノードに選択を残しますか? ありがとう。

<Window 
x:Class="DockingSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
WindowState="Maximized"
>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <TreeView Margin="6">
        <TreeViewItem Header="One">
            <TreeViewItem Header="One" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Two" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Three" Selected="TreeViewItem_Selected" />
        </TreeViewItem>
        <TreeViewItem Header="Two">
            <TreeViewItem Header="One" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Two" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Three" Selected="TreeViewItem_Selected" />
        </TreeViewItem>
    </TreeView>

    <TextBox Grid.Column="1" x:Name="textbox" />
</Grid>

private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
    {
        textbox.Focus();
    }

上記のウィンドウと「選択された」イベントハンドル

4

2 に答える 2

4

代わりに次のようにして、TreeView がイベントを終了するまでしばらく待ちます。

Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() => textbox.Focus()));

于 2011-06-29T09:37:45.380 に答える
-2

TreeView.HideSelection を false に設定します。

于 2014-04-10T16:46:00.923 に答える