TheFoZ Ответов: 1

Как вызвать метод для элемента управления в WPF и MVVM


Привет
Я недавно экспериментировал с WPF и MVVM после того, как долгое время был исключительно WinForms. Немного поздно для игры, я знаю!

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

Это можно сделать, вызвав метод ScrollIntoView списка, и я достиг этого, используя событие в коде за окном.

Есть ли способ сделать это более MVVM-способом или event-способ-лучший способ сделать это?

Что я уже пробовал:

private void cBox_Selected(object sender, RoutedEventArgs e)
{
    errorListBox.ScrollIntoView(errorListBox.SelectedItem);
}


<ComboBox DockPanel.Dock="Left"
          Width="100"
          ItemsSource="{Binding AvailableFilters, UpdateSourceTrigger=PropertyChanged}"
          SelectedItem="{Binding SelectedFilter}"
          Name="cBox"
          SelectionChanged="cBox_Selected"
          >

Nathan Minier

Прокрутка до определенного элемента является строго частью презентации (она не имеет никакого отношения к бизнес-логике), поэтому обработчик событий в представлении-это совершенно законный подход. Игнорируйте тех странных пуристов, которые утверждают, что код должен быть фактически пустым; инструмент существует для использования, и, смешивая строгую логику представления в виртуальных машинах, вы портите смысл всей архитектуры. Для вашего же собственного здравомыслия я не могу достаточно отстаивать такой подход.

TheFoZ

Привет Натан

Спасибо за ваш ответ. Мне нравится сама мысль о том, чтобы попытаться сохранить рассудок!

Nathan Minier

Я стараюсь помочь. Игра в MVVM игры почти стоила мне моего :)

1 Ответов

Рейтинг:
2

TheFoZ

Натан дал мне отличный ответ в комментариях