2011-01-07 6 views
1

나는 게으른 로딩을하고있는 트 리뷰를 가지고 있습니다. 나는 MVVM을 사용했다. 내 응용 프로그램이 시작될 때 기본적으로 트리의 맨 위 노드를 선택하려고했습니다. 당신이 당신의 최상위 노드에 바인딩 객체에서 더 구체적으로트 리뷰에서 최상위 노드를 선택하십시오 wpf MVVM

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

그런 다음 모델에서이 속성을 노출, 또는 :

답변

1

이 작업을 수행하는 가장 쉬운 방법은 IsSelected 속성과 스타일을 사용하는 것입니다. 내가 더 좋은 방법은 그냥 System.Windows.Controls에서 상속하는 클래스를 ceate ... 있다고 생각

 IsSelected = true; 
2

: 때 처음로드

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

... 그리고 true로 설정합니다. 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

그냥로드 이벤트를 사용

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