У меня есть ScrollViewer
, который содержит ItemsSource
. Элементы привязаны к ViewModel и сортируются в порядке возрастания. Пользователям разрешено добавлять элементы в этот список, однако список необходимо прокручивать снизу из-за порядка сортировки. Из того, что я нашел, ScrollViewer
не имеет функции «блокировки до дна», но имеет метод ScrollToEnd
, который выполняет то, что я ищу.Делегирование действий пользовательского интерфейса на ViewModel для выполнения
Проблема заключается в том, что элементы добавлены в ViewModel, и ViewModel, очевидно, не имеет доступа к представлению для вызова метода ScrollToEnd
на ScrollViewer
. Чтобы обойти эту проблему, я заявил делегат действий в ViewModel, как это:
public Action ScrollAction { get; set; }
и установить его в представлении при создании ViewModel:
viewModel.ScrollAction =() => scrollViewer.ScrollToEnd();
Делегат выполняется в ViewModel раз элемент добавляется в список. Несмотря на то, что это работает, это кажется мне немного взломанным, поскольку этот вид прерывает изоляцию ViewModel от представления. Есть ли лучший способ достичь этого?
Мне это нравится. Тестируемые. Отдельно. – meilke
Вы думали о добавлении привязанного поведения к SV? –
@GarryVass Что такое SV? – PoweredByOrange