我有一个具有以下架构的程序。
该程序从登录名开始,一旦用户输入了名称和密码,它就会定向到主窗口(在窗体之间传递值毫无问题)。该窗口使用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不会绑定模型 UserControl 中的任何内容。
我想找到一种方法来将登录信息传递给被称为 UserControl 的方法。每次更改 ContentControl 时,新的 UserControl 都将拥有登录数据。
是否有任何方法可以创建可通过登录名或主窗口发布并由每个UserControl读取的类全局变量?
答案 0 :(得分:0)
这并不是我想要的,但是我通过使用项目属性来达到目的。
我在登录中设置它,并在我想要的窗口中获取它。
object myProperty = App.Current.Properties["Test"];