我已經注意到了我現在正在處理的應用程序,所以我創建了一個簡單的測試應用程序來演示。以下是我的一個窗口和treeview項目的事件處理程序。如果展開「一個」或「兩個」父節點,然後單擊其中一個子項,則在文本框上調用Focus()方法後,所選子項不會顯示爲選定項。相反,選擇會彈出到父節點。有沒有人有任何想法如何克服這一點,並選擇留在選定的子節點?謝謝。Treeview物品在失去焦點時失去選擇
<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();
}
通過上面的窗口和 「選定」 事件HANDL
只是一個小的重構註釋,而不是把每個樹視圖項中的選擇事件,您可以: ; –
apandit
2009-06-16 21:04:25
看來,雙擊子元素正常工作,但不是單擊單擊...:S – apandit 2009-06-16 21:21:08
是的,我知道,但在這種情況下,我不希望父節點實際上導致動作發生,只有這些孩子。 我會假設雙擊「作品」,因爲第二次點擊重新捕獲焦點到樹視圖,並且即使父項被突出顯示,孩子仍可能被標記爲選中,因此它不會在第二次點擊時再次被選中。 但問題仍然存在,爲什麼當樹視圖失去焦點時突出顯示轉移到父項? – 2009-06-17 12:09:44