2011-01-07 12 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

...ただ、System.Windows.Controlsから継承するクラスをceate。 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; 
    } 
関連する問題