У меня есть программа со следующей схемой.
Программа запускается с логином, как только пользователь вводит имя и пароль, которые он направляет в главное окно (нет проблем с передачей значений там, как междуформы).В этом окне используется схема MVVM для загрузки необходимого в данный момент ContentControl .
<Window.Resources>
<DataTemplate ...>
</DataTemplate> (several times)
</Window.Resources>
<DockPanel>
<Menu DockPanel.Dock="Top" ItemsSource="{Binding MenuItems}">
<Menu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding Command}" />
</Style>
</Menu.ItemContainerStyle>
<Menu.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=MenuItems}">
<TextBlock Text="{Binding Header}"/>
</HierarchicalDataTemplate>
</Menu.ItemTemplate>
</Menu>
<ContentControl Content="{Binding CurrentPageViewModel}" >
</ContentControl>
</DockPanel>
Как видно из кода, в нем есть меню в виде ячеек (которое не изменяется) и ContentControl , который вызывает UserControl в зависимости от того, какая кнопка была нажата в меню. ContentControl связан и использует модель MVVM для загрузки UserControl .
Проблема заключается в том, что UserControl не использует схему MVVM(только загрузочная часть использует MVVM).Они напрямую работают в c # с использованием прямой модели WPF (.cs и .xaml), поэтому UserControl ViewModel ничего не связывает в Model UserControl .
Я хочу найти способ передачи информации для входа в систему вызываемому UserControl .Таким образом, каждый раз, когда он меняет ContentControl , новый UserControl будет иметь доступ к данным для входа в систему.
Есть ли способ создать глобальный аналогпеременная, которая может быть опубликована в логине или главном окне, а также для чтения каждым из пользовательских элементов управления?