WPF: как автоматически прокрутить мой первый ListViewItem при загрузке формы - PullRequest
0 голосов
/ 02 января 2019

Итак, я простой менеджер Clipboard.Каждые ListViewItem поступают с Clipboard.GetText, а мое приложение минимизируется до Tray, и при двойном щелчке по его Icon приложение переходит, и я хочу сосредоточиться на первом ListViewItem, чтобы иметь возможность перемещаться с помощью Up & Down стрелки.

Это мой ListView:

ListView myListView;

Список моделей:

public ObservableCollection<string> Clipboards

Событие Window Loaded:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        if (viewModel.Clipboards.Count != 0)
            myListView.ScrollIntoView(myListView.Items[0]);
        myListView.Focus();
     }

Так что в настоящее время, когда я открываю int в первый раз, приложение, Focus не на любом ListViewItem, и в следующий раз фокус будет на последнем выбранном / кликеListViewItem и не на первом.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Из того, что я вижу, вы фокусируетесь не на ListViewItem, а на самом ListView.Я думаю, что это твоя ошибка.Чтобы сфокусировать предмет, вы должны получить его контейнер.Объекты в ItemsSource на самом деле представляют собой сами данные, а не UIElement для визуализации.Чтобы нарисовать эти данные или добавить их в визуальное дерево для рендеринга, ItemsControl сгенерирует контейнер для данных, например ListViewItem.Только UIElement может получить фокус, поэтому UIElement предоставляет метод Focus ().Вы должны использовать ItemContainerGenarator, чтобы получить этот контейнер для ваших данных:

  ListView myListView;
  (myListView.ItemsPanel as VirtualizingPanel)?.BringIndexIntoViewPublic(0);
  myListView.Dispatcher.Invoke(new Action(
    () => 
    {
      ListBoxItem dataContainer = myListView.ItemContainerGenerator.ContainerFromIndex(0) as ListBoxItem;
      dataContainer?.Focus();
    }), DispatcherPriority.ContextIdle);

В этом примере будет перемещен фокус на первый элемент в ListView.

0 голосов
/ 02 января 2019

Похоже, у вас есть ViewModel в коде позади.Это не очень хороший стандарт MVVM.

Может быть, это может быть полезно Как правильно установить фокус на ListBox при загрузке, если он использует привязку данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...