XAML MVVM Multibinding - PullRequest
       6

XAML MVVM Multibinding

0 голосов
/ 21 декабря 2010

У меня есть приложение MVVM WPF, в которое вставлены «пользовательские настройки». Эти параметры содержат такие вещи, как последние использованные поисковые термины или ширину столбцов в сетках данных и т. Д. Это прекрасно работает, и ViewModel не знает об этих настройках, так как они относятся к определенному виду, а ViewModel может использоваться несколькими представлениями.

Эти значения привязаны к Xaml представления.

Тем не менее, некоторые настройки имеют уровень помех для свойств в ViewModel.

Пример:

ViewModel имеет свойство public int MaxResults { get; set; }, которое используется для ограничения количества результатов, возвращаемых запросом.

Когда пользователь меняет это значение, скажем, со 100 на 50, в идеале мы хотим, чтобы оно сохранялось в настройках просмотра; таким образом, включая следующий раз, когда используется просмотр, используется значение 50, а не 100.

мой первый вопрос:

Как связать настройки просмотра и свойство ViewModel с одним и тем же элементом? Я думаю о преобразователе нескольких значений, но не уверен, есть ли более забавные способы выполнения этой операции. Мне нужно, чтобы обе привязки были двухсторонними, но также не попадали ни в какие ужасные циклы обновления.

мой второй вопрос:

Иногда я хочу, чтобы ViewModel имел приоритет над значениями, предоставленными настройками просмотра. Мне интересно, есть ли у кого-нибудь предложения о том, чтобы одно связанное значение преобладало над другим.

Любые комментарии / ответы / вопросы с благодарностью.

1 Ответ

0 голосов
/ 21 декабря 2010

Не вижу смысла в том, чтобы ViewModel не знал об этих настройках.Я хотел бы, чтобы ваша виртуальная машина контролировала эти пользовательские настройки, и у меня была возможность просматривать их через привязку.

Преимущество этого заключается в том, что вы управляете этими привилегиями из вашей модели представления, и вы можете проверить, правильно ли загружаются ваши пользовательские настройки в виртуальной машине через ваши модульные тесты.

Помните, вашВиртуальная машина - это представление вашей модели, поэтому загрузка пользовательских настроек через виртуальную машину имеет здесь смысл, и гораздо реже встречаются подобные случаи.

...