Сохранить WPF TreeView состояние при перезагрузке данных - PullRequest
7 голосов
/ 21 октября 2010

Я использую TreeView для отображения моих данных в пользовательском интерфейсе. Теперь мое приложение обновляется каждые 5 секунд, чтобы отображались самые свежие данные. Есть ли способ сохранить мое расширенное состояние или свернутое состояние древовидной структуры даже после перезагрузки окна? Потому что, если у меня огромное количество данных и мне требуется больше 5 секунд, чтобы перейти к нужным данным, TreeView просто сворачивается через каждые 5 секунд с обновлением окна, и я должен начать с нуля.

      <TreeView ItemsSource="{Binding Sections}" Grid.Row="1"
          ItemTemplate="{StaticResource sectionTemplate}" >

        <TreeView.Resources> 
          <Style TargetType="TreeViewItem"> 
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
          </Style> 
        </TreeView.Resources> 

    </TreeView>

public ObservableCollection<MyViewModel> =new ObservableCollection<MyViewModel>();

public bool IsExpanded
    {
      get { return (bool)GetValue(IsExpandedProperty); }
      set { SetValue(IsExpandedProperty, value); }
    }
    public static readonly DependencyProperty IsExpandedProperty = DependencyProperty.Register("IsExpanded", typeof(bool), typeof(MyViewModel));


 if (result.TotalResults > 0)
      {
        foreach (DomainObject obj in result.ResultSet)
        {
          AT myAT= (AT)obj;
          arrdep.Add(myAT);
        }
      }

1 Ответ

15 голосов
/ 21 октября 2010

Я решил эту проблему, добавив свойства IsExpanded и IsSelected к объекту, к которому привязан мой TreeView

<Style TargetType="{x:Type TreeViewItem}">
    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...