【发布时间】:2019-07-10 07:42:17
【问题描述】:
在我的项目中,我有一个类MainViewModel,其中我有DataContext 属性,我使用DataContext 从数据库中加载MainWindow 中的MENU。在MainWindow 中,我有一个ContentControl 来加载UserControl。当我单击菜单项时,它应该调用MainViewModel 的函数来加载ContentControl 中的UserControl。在这里我陷入了一个循环。
主窗口:
public partial class MainWindow : Window
{
public MainWindow()
{
DataContext = new MainViewModel();
}
}
XAML:
<ContentControl x:Name="contentCont1" />
MainViewModel:
public class MainViewModel: ViewModelBase
{
UCSale ucSale = new UCSale();
MainWindow mw = new MainWindow(); //IS IT ALLOED ?
public MainWindow()
{
Window1.contentCont1.Children.Add(ucSale );;
}
private void FillMenuItems()
{
//LOAD MENU ITEMS FROM DATABASE
}
}
【问题讨论】:
-
共享窗口代码怎么编译?你有一个主窗口的ctor。我建议使用一个窗口 - 主窗口来托管对话框以外的内容。和。不要使用框架和页面。 social.technet.microsoft.com/wiki/contents/articles/…
-
我正在使用 MVVM,所以我不能使用一个窗口。这就是我陷入困境的原因
-
你写的不是真正的 MVVM 代码。将
ShareWindow重命名为MainWindowViewModel或MainViewModel。您的MainWindow类不应构造或分配DataContext。ShareWindow不应构造MainWindow(这是在App.xaml.cs内部完成的)。 -
您的代码包含许多错误,无法编译且与您的描述不符。请再次仔细阅读您的问题,然后以代码说明您的问题 (minimal reproducible example) 并且正确的方式对其进行编辑。最后,陈述你的问题,简洁明了(目前你的帖子中没有问题)。
-
@logcat 这不是 MVVM 实现。您正在编写错误的代码。在
MainViewModel中,您应该获取适当的属性,然后将它们绑定到视图中。
标签: c# wpf datacontext