Выберите topnode по умолчанию в Treeview wpf MVVM - PullRequest
2 голосов
/ 07 января 2011

У меня есть Treeview, который выполняет ленивую загрузку. Я использовал MVVM. Я хотел выбрать верхний узел дерева по умолчанию при запуске моего приложения.

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

Я думаю, что есть лучший способ ... Просто создайте класс, который наследуется от 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);

И это все.

1 голос
/ 07 января 2011

Самый простой способ сделать это - использовать стиль со свойством 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;
0 голосов
/ 15 января 2014

Просто используйте Loaded Event

    private void tvComponents_Loaded(object sender, RoutedEventArgs e)
    {
        (tvComponents.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem).IsSelected = true;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...