Как вызвать метод для элемента управления в 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 игры почти стоила мне моего :)