我想要在没有任何侧边栏的情况下从一个视图模型导航到另一个视图模型。
例如,我有一个主窗口视图
,这是我加载用户控件
的地方。
我尝试从MainViewModel
访问静态实例以更改视图,但它不起作用。
MainWindow.xaml
<Window.Resources>
<DataTemplate DataType="{x:Type vm:FirstViewModel}">
<v:FirstView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SecondViewModel}">
<v:SecondView/>
</DataTemplate>
</Window.Resources>
<ContentControl Content="{Binding CurrentViewModel}"/>
MainViewModel.cs
class MainviewModel : ObservableObject
{
private ObservableObject _currentViewModel = new FirstViewModel();
public ObservableObject CurrentViewModel
{
get { return _currentViewModel; }
set
{
_currentViewModel = value;
RaisePropertyChangedEvent("CurrentViewModel");
}
}
private static MainViewModel _instance = new MainViewModel();
public static MainViewModel Instance { get { return _instance; } }
}
这里有我的FirstView
,它只包含一个按钮和几个其他的UI设计
FirstView.xaml
<Button Command="{Binding goToSecondView}" />
FirstViewModel.cs
class FirstViewModel : ObservableObject
{
public ICommand goToSecondView
{
get
{
return new DelegateCommand(() =>
{
MainViewModel.Instance.CurrentViewModel = new SecondViewModel();
});
}
}
}
我有一个名为
SecondView
的视图,它与FirstView
类似,只是导航到FirstView
。我已经尝试搜索解决方案,但迄今为止,我只找到了一些示例,显示在面板上的按钮可以通过单击这些按钮来切换
User Control
。我想要实现的是通过
User Control
本身上的按钮来启用User Control
的切换,而不需要任何侧面板。非常感谢任何帮助,并肯定会在我的未来项目中使用。
MainWindow
的DataContext
?你尝试订阅它的PropertyChanged
事件,以查看它是否实际上是静态实例了吗? - Sjeijoet