【发布时间】:2021-01-16 19:29:00
【问题描述】:
我是 MVVMCross 包和 C# 的新手。我花了一天的大部分时间试图找出我不理解的内容,阅读有关演示者和导航等的文档以尝试理解,但我错过了一些东西。
我最初创建了一个没有实现 MVVM 的 WPF 应用程序,现在我想转换,但我在这部分苦苦挣扎。我希望有一个主菜单,它是“MainWindow”(如 shell)中网格的一部分,其中页面的剩余部分(和网格列 2)用于显示嵌套视图。
最终,我只是想在原始 WPF 应用程序中重现相同的分层控件。在该应用程序中有一个内容控件,它占据了大部分表单,其内容属性根据用户的选择设置为不同的表单。
MainWindow.xaml.cs
public partial class MainWindow : MvxWindow
{
public MainWindow(IMvxNavigationService navService)
{
InitializeComponent();
DataContext = new MainViewModel(navService);
//content.Content = new AdminMenuView();
}
}
MainViewModel.cs
private MvxViewModel _nextMenuContent;
public MainViewModel(IMvxNavigationService navService)
{
_navService = navService;
MoveMenuCommand = new MvxCommand(MoveMenu);
ChildViewModel = new AdminMenuViewModel();
GoToAdminMenu = new MvxCommand(SelectAdminMenu);
}
MainView.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 的路径字符串,那么我在内容控件中得到的只是一个空白屏幕将其绑定到 content 属性。
【问题讨论】:
标签: c# wpf mvvm data-binding mvvmcross