2011-01-07 42 views

回答

1

做到這一點,最簡單的方法是使用樣式與IsSelected屬性:在您綁定到你的頂級節點對象

<Style x:Key="SelectableTreeViewItem" TargetType="TreeViewItem"> 
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
</Style> 

然後在你的模型公開此屬性,或者更具體。

public class MyTopLevelFoo 
    { 
     public bool IsSelected { get; set; } 
    } 

...它設置爲true時首先加載:

 IsSelected = true; 
2

我認爲這是一個更好的辦法......只是ceate從System.Windows.Controls繼承的類。 TreeView並重寫OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)。並在這種方法把這個代碼:

if (base.SelectedItem == null) 
{ 
if(base.Items.Count != 0) 
{ 
(base.ItemContainerGenerator.ContainerFromItem(base.Items[0]) as TreeViewItem).IsSelected = true; 
} 
} 
base.OnItemsChanged(e); 

就是這樣。

0

只需使用Loaded事件

private void tvComponents_Loaded(object sender, RoutedEventArgs e) 
    { 
     (tvComponents.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem).IsSelected = true; 
    }