我有一个窗口,我在其上加载了一个用户控件,比如 Control1。现在,如果用户单击某个新的 UserControl 按钮,则 Control2 应该加载到 Window 上,并且 Control1 应该消失。同样在这里,当用户单击下一个 UserControl 按钮时,应该加载 Control3 并且 Control2 应该消失。也应该可以返回,例如从 Control3 到 Control2。
在我的 Window 上加载第一个主 UserControl 很容易,我已经做得足够多了。但我被困在如何实现用户控件之间的“导航”。以前从来没有做过这样的事情。我将 MVVM 用于我的 WPF 应用程序。有人有什么想法吗?
谢谢。
编辑:有了 Rachel 的回答,我现在在命令中执行此操作以切换控件:在 MainWindow 中:
<DataTemplate DataType="{x:Type ViewModel:MainControlViewModel}">
<my:MainControl />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:ProductsControlViewModel}">
<my:ProductsControl />
</DataTemplate>
<Grid>
<ContentControl Content="{Binding CurrentPageViewModel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
在 MainControlViewModel 中和 ProductsControl 中几乎相同:
public ICommand LoadProductControlCommand
{
get
{
if (_loadProductControl == null)
_loadProductControl = new RelayCommand(LoadProductControl);
return _loadProductControl;
}
}
private void LoadProductControl(object notUsed)
{
_mainWindowViewModel = (MainWindowViewModel) Application.Current.MainWindow.DataContext;
_mainWindowViewModel.CurrentPageViewModel = new ProductsControlViewModel();
}
这是一个好方法还是我应该做不同的事情?因为在我的应用程序中,按钮位于控件上,而不是主窗口。