[英]MVVMCross How to display a view within a view
我是 MVVMCross package 和 C# 的新手。 我花了一天的大部分时间试图找出我不理解的内容,阅读有关演示者和导航等的文档以试图理解,但我错过了一些东西。
我最初创建了一个未实现 MVVM 的 WPF 应用程序,现在我想转换,但我在这部分苦苦挣扎。 我想要一个主菜单,它是“MainWindow”中网格的一部分,例如 shell,其中页面的其余部分(和网格列 2)用于显示嵌套视图。
最终,我只是想在原始 WPF 应用程序中重现相同的分层控件。 在该应用程序中有一个内容控件,它占据了大部分表单,其内容属性设置为不同的表单,具体取决于用户的选择。
主窗口.xaml.cs
public partial class MainWindow : MvxWindow
{
public MainWindow(IMvxNavigationService navService)
{
InitializeComponent();
DataContext = new MainViewModel(navService);
//content.Content = new AdminMenuView();
}
}
主视图模型.cs
private MvxViewModel _nextMenuContent;
public MainViewModel(IMvxNavigationService navService)
{
_navService = navService;
MoveMenuCommand = new MvxCommand(MoveMenu);
ChildViewModel = new AdminMenuViewModel();
GoToAdminMenu = new MvxCommand(SelectAdminMenu);
}
主视图.xaml
<ContentControl Content="{Binding ChildViewModel}"/>
***网格和列都工作正常
MainView.xaml.cs
public partial class MainView : MvxWpfView
{
public MainView()
{
InitializeComponent();
}
}
AdminMenuModel.cs
public class AdminMenuViewModel : MvxViewModel
{
private readonly IMvxNavigationService _navService;
public AdminMenuViewModel()
{
Initialize();
}
public override void Prepare()
{
base.Prepare();
}
public override async Task Initialize()
{
await base.Initialize();
}
}
AdminMenuModel.xaml.cs
public partial class AdminMenuView : MvxWpfView
{
public AdminMenuView()
{
InitializeComponent();
}
public new AdminMenuViewModel ViewModel
{
get { return base.ViewModel as AdminMenuViewModel; }
set { base.ViewModel = value; }
}
}
当我调用它运行的 AdminMenuViewModel 时,如果我将“ChildViewModel”绑定到内容控件的 DataContext 属性,我在内容控件中得到的只是一个空白屏幕,如果我将它绑定到 AdminMenuViewModel 的路径字符串内容属性。
您必须将 MainViewModel 设置为主要 window 的 DataContext
public MainWindow(IMvxNavigationService navService)
{
DataContext = new MainViewModel(navService);
InitializeComponent();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.