Treeview物品在失去焦点时失去选择 [英] Treeview Item Loses Selection When Focus Is Lost
问题描述
我已经注意到了我正在使用的应用程序,所以我创建了一个简单的测试应用程序来演示。下面是我的一个窗口和树视图项目的事件处理程序。如果展开一个或两个父节点,然后单击其中一个子项,则在文本框上调用Focus()方法后,所选的子项不会显示为选定子项。相反,选择弹出到父节点。有没有人有任何想法如何克服这一点,并选择留在选定的孩子节点?
$ p $ < 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 =最大化
>
<网格>
< Grid.ColumnDefinitions>
< ColumnDefinition Width =300/>
< ColumnDefinition Width =*/>
< /Grid.ColumnDefinitions>
< TreeView Margin =6>
< TreeViewItem Header =One>
< TreeViewItem Header =OneSelected =TreeViewItem_Selected/>
< TreeViewItem Header =TwoSelected =TreeViewItem_Selected/>
< TreeViewItem Header =ThreeSelected =TreeViewItem_Selected/>
< / TreeViewItem>
< TreeViewItem Header =Two>
< TreeViewItem Header =OneSelected =TreeViewItem_Selected/>
< TreeViewItem Header =TwoSelected =TreeViewItem_Selected/>
< TreeViewItem Header =ThreeSelected =TreeViewItem_Selected/>
< / TreeViewItem>
< / TreeView>
< TextBox Grid.Column =1x:Name =textbox/>
< / Grid>
private void TreeViewItem_Selected(object sender,RoutedEventArgs e)
{
textbox.Focus();
$ / code>
用上面的窗口和Selected事件处理
调度器给予TreeView一些时间来完成它们的事件.BeginInvoke(DispatcherPriority.Input,new Action(()=> textbox.Focus()));
I have noticed this on an application I am working on right now, so I created a simple test app to demonstrate. Below is my a window and the event handler for the treeview items. If you expand either the "One" or "Two" parent nodes, and click one of the children, the child that was selected does not show up as selected after the Focus() method is called on the text box. Instead, selection pops to the parent node. Does anyone have any idea how to overcome this, and have the selection remain with the selected child node? Thanks.
<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();
}
With the above window and the "Selected" event handl
Give some time for TreeView to finish their events by doing this instead:
Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() => textbox.Focus()));
这篇关于Treeview物品在失去焦点时失去选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!