C# 让我的Viewmodel显示在名称空间下拉列表中

C# 让我的Viewmodel显示在名称空间下拉列表中,c#,wpf,mvvm,C#,Wpf,Mvvm,我试图在页面上将ViewModel作为静态资源公开,以便绑定可以轻松访问它 TestViewModel.cs namespace Test.WPFUI.Home { public class TestViewModel.... Xaml xmlns:local="clr-namespace:Test.WPFUI.Home" <UserControl.Resources> <local:TestViewModel x:Key="mainPageViewMod

我试图在页面上将ViewModel作为静态资源公开,以便绑定可以轻松访问它

TestViewModel.cs

namespace Test.WPFUI.Home
{ 
    public class TestViewModel....
Xaml

xmlns:local="clr-namespace:Test.WPFUI.Home"

<UserControl.Resources>
    <local:TestViewModel x:Key="mainPageViewModel" />
</UserControl.Resources>
xmlns:local=“clr命名空间:Test.WPFUI.Home”
找不到TestViewModel。请给我一些提示或建议

寻求帮助

公共类LoanViewModel:ScreenViewModelBase、IRecord、INotifyPropertyChanged
{
公共贷款视图模型(IEventAggregator事件)。。。。。。。。。。。。。
听起来您最初的问题是没有完整的xmlns定义。您通常需要名称空间和程序集

根据我的经验,最简单的方法就是让intellisense为你做这件事。只要开始键入你想要的名称空间,只要它在被引用的项目中,就会有一个自动完成选项

第二个问题是由于没有默认构造函数。您编写了以下内容:

<local:TestViewModel x:Key="mainPageViewModel" />
这将删除提供的(无参数)默认构造函数。我将大胆猜测,创建正确的
IEventAggregator
并不简单,也不是XAML所需要的,因此我看到了两种选择:

  • 您并不需要在构造函数中使用该参数。只需在视图模型中添加一个默认构造函数,就可以了

  • 您确实需要该参数,因此从XAML实例化不是一个好主意。请从视图的构造函数的其他位置传入视图模型

  • 如果您觉得可以从XAML实例化正确的对象,请使用本文调用参数化构造函数:


    在我看来,将真正规则的类放入XAML并不是一个好的模式,所以我不会遵循。所谓规则,我的意思是与视图完全无关。

    Hi@BradleyDotNET我做了,但仍然是相同的下拉列表,我的Viewmodel没有出现。它不是在不同的程序集中吗?你是手工制作xmlns还是使用auto helper?Hi@BradleyDotNET我设置了正确的程序集。“本地:TestViewModel”带下划线,上面写着找不到默认构造函数。请问原因是什么,以及如何修复它?啊;没有默认构造函数,您定义了默认构造函数吗?记住,定义自己的参数化构造函数会删除默认构造函数。没有,我不太确定如何在ViewModel中执行此操作。
    <local:TestViewModel x:Key="mainPageViewModel" />
    
    public LoanViewModel(IEventAggregator events) .............