繁体   English   中英

WPF MVVM导航[重复]

WPF MVVM Navigation [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这个问题已经在这里有了答案:

我试图在登录后在MainWindow中实现MVVM导航,在此之前,单击“登录”按钮后,我必须调用MainWindow.xaml进行显示,之后我根据菜单/功能区选择在Mainwindow中进行导航。

下面是我到目前为止完成的实现:

在“登录”按钮命令上:

private void Entry(object parameter)
    {
        IMainWindowViewModel viewM = new MainWindowViewModel();
        ViewBinder<IMainWindowView> main = new ViewBinder<IMainWindowView>(viewM);
        var view = main.View;
    }

MainWindowViewModel:

public class MainWindowViewModel:ViewModel<IMainWindowView>, IMainWindowViewModel
{

    public int EmpID
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    public string EmpName
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    public void GetEmployees()
    {
        throw new NotImplementedException();
    }
public object DataContext
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    public MainWindowViewModel(IMainWindowView view)
        : base(view)
    { }
}

IMainWindowViewModel:

public interface IMainWindowViewModel:IMainWindowView
{
    int EmpID { get; set; }
    string EmpName { get; set; }
    void GetEmployees();
}

IMainWindowView:

public interface IMainWindowView:IView
{
}

ViewBinder:

public class ViewBinder<T> where T : IView
{
    private T currentView;
    public IView View
    {
        get
        {
            var viewModel = currentView.GetViewModel();
            return (IView)viewModel.View;
        }
    }

    public ViewBinder(T targetView) 
    {
        this.currentView = targetView;
    }

}

但是,在运行此应用程序时,它显示如下错误消息: 'System.Waf.Applications.ViewModel'不包含带有0个参数的构造函数D:\\ MajorApps \\ SampleApp \\ MajorApps.Application \\ ViewModels \\ MainWindowViewModel.cs

谁能帮我这个我错过/错误的地方。

谢谢@nag

1 个回复

MainWindowViewModel的基类不包含无参数构造函数。 您必须调用它定义的其中之一,例如:

public class MainWindowViewModel:ViewModel<IMainWindowView>, IMainWindowViewModel
{
    public MainWindowViewModel()
        : base(/* something here */)
    {
    }

    // ....
}
1 WPF MVVM灯光导航

我正在使用MVVM Light开发Windows WPF应用程序。 至于切换视图和导航的目的,是否有可用的设置类? 现在,我正在使用MainViewController来加载带有datatemplate和messenger类的其他视图。 但是我不确定这是否是最佳实践。 ...

2 WPF MVVM窗口导航

我正在将MVVM模式应用到将具有数十个屏幕(带有各自的ViewModel)的应用程序。 现在,我陷入一个非常简单的问题……谁负责创建新窗口,实例化viewModel并将一个分配给另一个? 我认为在View甚至ViewModel中执行此操作是错误的。 我看到许多建议使用外部框架的答复,这 ...

3 使用MVVM的WPF导航

我试图按照这篇文章中提供的答案,但我必须遗漏一些微不足道的东西。 我已将我的DataTemplate定义为App.xaml ,如下所示: 然后,在我的MainWindow.xaml我定义了以下代码: MainViewModel的代码包含一个属性CurrentView和一个ICo ...

4 MVVM Light WPF导航

我想要实现的目标。 MVVM Light WPF的导航服务,在这里我可以轻松地说NavigateTo(View URI或ViewModel以及应该显示View或ViewModel的框架元素的字符串名称)。 我首先从这里尝试了“视图优先”方法。 https://stackoverflow ...

5 WPF MVVM中的线性导航

我正在使用Cinch MVVM框架,但是我认为这与所有WPF方法有关。 我想要一个主屏幕-Shell或MainWindow-然后包含各种视图模型。 要在视图模型之间导航,我正在使用(或将要使用)一个样式为按钮条的选项卡控件,其中的内容区域位于下方-完全可以,因为我将视图模型添加到tabc ...

6 具有参数的WPF Mvvm导航

遵循本教程 (以及其他内容)并阅读此处提出的问题,我构建了一种导航机制,该机制将使我能够在ViewModels之间传递参数: 对象库-每个视图模型都继承自它: MainViewModel-负责导航: 和主要观点: 我的问题是:如果像上面那样在主视图中设置DataTem ...

7 WPF MVVM导航技术

我知道有很多关于WPF导航的问题,对于使用MVVM模式开发的应用程序来说,我已经阅读了数十个答案,但是可能缺少一些东西。 我根据Rachel 在这里的文章开始构建应用程序。 一切正常,此XAML有一个ApplicationView窗口: ApplicationViewModel , ...

8 WPF MVVM:MainWindow导航

我有一个包含一个窗口的WPF应用程序。 用户仅可抛出此窗口,即可在应用程序中执行其导航。 应用程序结构为: MainWindow.xaml MainWindowViewModel.cs StartPage.xaml StartPageViewMode.c ...

9 使用MVVM的WPF导航

我想了解有关使用MVVM导航的一些知识。 问题1:如果身份验证通过,请单击“登录”按钮,我想打开一个全新的窗口,该如何在不丢失MVVM模式的情况下做到这一点。 (我知道简单的方法NewWindow w = new NewWindow(),可以显示和隐藏,还可以),但这太可怕了,以至于我 ...

10 WPF mvvm 导航的另一种方式

我不确定如何使用 mvvm 进行导航。 我是初学者,所以我没有使用过任何框架,比如 mvvm light。 我找到了很好的例子https://rachel53461.wordpress.com/2011/12/18/navigation-with-mvvm-2/ 。 但这并不是我正在寻找的,因为在 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM