Отображение пользовательского контроля входа в Windows Phone с Mvvm light - PullRequest
0 голосов
/ 28 сентября 2011

Хорошо, так что я хочу сделать, чтобы при запуске приложения отображался какой-то элемент управления входом в систему (возможно, UserControl с TextBox и PasswordBox).

В ситуации, не относящейся к mvvm, один из способов сделать это - использовать элемент управления PopUp, добавить элемент usercontrol в качестве дочернего элемента и все готово.

В ситуации с MVVM я немного сбит с толку из-за того, как бы вы достигли подобного результата.

Я рассмотрел обмен сообщениями с помощью DialogMessage, и это хорошо для отображения типичного MessageBox, но как насчет пользовательского контроля пользователя?

любая помощь будет фантастической! Кажется, я нигде не могу найти демо-код этого кода.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

В ситуации MVVM вы можете использовать делегата, чтобы позволить вашему View открывать диалоговое окно, когда ViewModel запрашивает его.

Вы определяете делегата на виртуальной машине:

public Func<LoginResult> ShowLoginDialogDelegate;

В вашемВ представлении вы определяете функцию, которая будет вызываться:

private LoginResult ShowLoginDialog()
{
    LoginResult result;
    // show a dialog and get the login data
    return result;
}

Затем вы «подключаете» делегат и метод в представлении:

_viewModel = new MyViewModel();
DataContext = _viewModel;
_viewModel.ShowLoginDialogDelegate += ShowLoginDialog;

И теперь вы можете использовать его в своей ViewModelнапример, когда команда выполняется так:

LoginResult result = ShowLoginDialogDelegate();
0 голосов
/ 30 сентября 2011

Более простым ответом является управление его видимостью через состояние просмотра, которое с помощью небольших манипуляций можно заставить работать через привязку данных, позволяя модели представления отображать состояние «Страница входа в систему» ​​при необходимости.

Я недавно писал об этом для серии Silverlight / XNA, которую вы можете просмотреть здесь .

Было бы намного проще, если бы SL4 DataEventrigger был доступен, но, хэй-хо.

...