Как управлять элементами управления окна WPF (вкладками, текстовыми полями, списками) из ViewModel - PullRequest
2 голосов
/ 15 ноября 2011

Я немного новичок в WPF.Я делаю приложение с использованием WPF (все элементы управления пользовательского интерфейса уже исправлены) и MVVM, но большинство событий находятся в коде позади.Я нахожусь в процессе очистки кода, но у меня есть коды, подобные (приведенным ниже), для переключения между вкладками и для запуска видимости элементов управления в зависимости от параметров:

tabItem1.Selected = true;

textBox1.Visibility = Visibility.Hidden;

lbxHusbandsWives.Items.Add(txtHusbandsWives.Text + '/' +
   cbxHusbandsWivesCountry.Text + '/' +
   dpHusbandsWives.SelectedDate.Value.ToShortDateString());

Как я могучто за модель?Ну, внутри команды?Так я могу очистить грязный код позади?Спасибо за вашу помощь.:)

1 Ответ

5 голосов
/ 15 ноября 2011

Как я уже говорил много раз ранее, MVVM не означает «нет кода позади».Есть вещи, которые вы можете или должны делать в программном коде, если они строго связаны с представлением и не являются необходимыми для корректной работы ViewModel.

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

Все в опубликованном вами коде может быть сделано с привязками в XAML:

  • textBox1.Visibilityможет быть привязан к свойству bool ViewModel, используя BooleanToVisibilityConverter
  • lbxHusbandsWives.ItemsSource может быть привязан к ObservableCollection в ViewModel (ObservableCollection уведомляет представление, когда элементы добавляются илиисключено из него)
  • txtHusbandsWives.Text, cbxHusbandsWivesCountry.Text и dpHusbandsWives.SelectedDate также могут быть привязаны к свойствам соответствующего типа
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...