Линейная навигация в WPF MVVM - PullRequest
       6

Линейная навигация в WPF MVVM

0 голосов
/ 17 августа 2010

Я использую инфраструктуру Cinch MVVM, однако я думаю, что это относится ко всем подходам WPF.

Я хочу иметь основной экран - Shell или MainWindow - который затем содержит различные модели представления.Для навигации между моделями представления я использую (или собираюсь использовать) элемент управления вкладками, стилизованный под полосу кнопок с областью содержимого под ним - все в порядке, так как я добавляю модели представления в tabcontrol (хорошо в коллекцию 'Views', котораяпривязан к элементу управления вкладками) во время выполнения.

Экран, который не вписывается в эту методологию, - это экран входа в систему, который я на самом деле не хочу добавлять к элементу управления вкладками - желательно, чтобы он был вэто собственный пользовательский контроль, который занимает весь экран, кроме покрытия логотипа;то есть я хотел бы, чтобы он отображался в том же окне, а не во всплывающем диалоговом окне, однако я не уверен, как динамически добавлять / удалять элементы управления, а затем добавлять последующий tabcontrol после успешного входа пользователя (и удаления входа в систему).экран).Какие контейнеры следует использовать?

TIA.

Ответы [ 3 ]

1 голос
/ 17 августа 2010

Самый простой способ - это поместить ваш tabcontrol в сетку без столбцов и строк, чтобы она заполняла сетку по умолчанию.Затем добавьте дополнительную сетку или loginusercontrol в сетку, как показано ниже.В тот момент, когда пользователю необходимо войти в систему, вы можете установить видимость «MainTabControl» и «LoginGrid» на Visible и переключить его обратно после успешного входа в систему. Я надеюсь, что приведенный ниже xaml поможет вам достаточно.

0 голосов
/ 25 мая 2012

Вас может заинтересовать Lakana , это легкая и ненавязчивая навигационная структура для WPF.

Риана

0 голосов
/ 17 августа 2010

Вы можете использовать ContentControl с контентом, связанным с моделью представления. Таким образом, у вас будет две модели представления, представляющие экран входа и главный экран, и вы будете использовать DataTemplate для отображения соответствующего экрана.


<Window.Resources>
...
<DataTemplate DataType="{x:Type my_view_models:SignInViewModel}">
  <my_controls:SignInScreenView />
</DataTemplate>
...
</Window.Resources>

<ContentControl Content={Binding} />

...