我有一个具有以下模式的程序。
程序以登录开始,一旦用户输入用户名和密码,它就指向主窗口(在那里传递值没有问题,因为它是在表单之间)。该窗口使用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)。它们使用直接WPF模型(.cs和.xaml)直接在c#中操作,因此 UserControl ViewModel没有绑定Model UserControl 中的任何内容。
我想找到一种方法将登录信息传递给被调用的 UserControl。每次更改 ContentControl 时,新的 UserControl 都可以访问登录数据。
是否有任何方法可以创建一个类似全局的变量,该变量可以由登录或主窗口发布,并由每个UserControl读取?
1条答案
按热度按时间pod7payv1#
这并不完全是我想要的,但我通过使用项目属性做到了这一点。
我把它放在loggin里,然后把它放在我想要的窗口里。