【发布时间】:2018-10-09 18:40:57
【问题描述】:
您好,我正在尝试开发 Datalogger,因此我创建了一个菜单来切换选项,我决定使用 DataTemplates 和不同的 ViewModel。 Menu
XAML:
<Window.Resources>
<DataTemplate x:Name="GraficoVtemplate" DataType="{x:Type viewmodels:GraficoVM}">
<view:GraficoV DataContext="{Binding}" />
</DataTemplate>
<DataTemplate x:Name="ListaVtemplate" DataType="{x:Type viewmodels:ListaVM}">
<view:ListaV DataContext="{Binding }"/>
</DataTemplate>
<ContentControl Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="4" Grid.RowSpan="5" Content="{Binding}"/>
这就是我更改数据上下文的方式;
XAML.CS
private void Novoteste_btn_Click(object sender, RoutedEventArgs e)
{
DataContext = new NovoTesteVM();
}
private void Lista_btn_Click(object sender, RoutedEventArgs e)
{
DataContext = new ListaVM();
}
这是我拥有的文件,模型是空的,viewsmodals 有一些控件。Files
问题是当我更改菜单时,上一个菜单的内容没有保存,即当我选择菜单“lista”并填写一个数据网格时,当我再次选择时转到另一个菜单菜单“lista”数据丢失。我不知道我需要添加什么,或更改以使数据不丢失
谢谢你的解释!
编辑 1:
MainWindows.xaml.cs
private void Novoteste_btn_Click(object sender, RoutedEventArgs e)
{
DataContext = NovoTesteVM.NovoTesteViewModel;
}
private void Grafico_btn_Click(object sender, RoutedEventArgs e)
{
DataContext = GraficoVM.Grafico;
}
NovoTesteVM.cs
public class NovoTesteVM
{
private static NovoTesteVM novoTesteViewModel;
public static NovoTesteVM NovoTesteViewModel
{
get
{
novoTesteViewModel = novoTesteViewModel ?? new NovoTesteVM();
return novoTesteViewModel;
}
}
}
【问题讨论】: