C# 让我的Viewmodel显示在名称空间下拉列表中
我试图在页面上将ViewModel作为静态资源公开,以便绑定可以轻松访问它 TestViewModel.csC# 让我的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
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并不是一个好的模式,所以我不会遵循。所谓规则,我的意思是与视图完全无关。Hi@BradleyDotNET我做了,但仍然是相同的下拉列表,我的Viewmodel没有出现。它不是在不同的程序集中吗?你是手工制作xmlns还是使用auto helper?Hi@BradleyDotNET我设置了正确的程序集。“本地:TestViewModel”带下划线,上面写着找不到默认构造函数。请问原因是什么,以及如何修复它?啊;没有默认构造函数,您定义了默认构造函数吗?记住,定义自己的参数化构造函数会删除默认构造函数。没有,我不太确定如何在ViewModel中执行此操作。
<local:TestViewModel x:Key="mainPageViewModel" />
public LoanViewModel(IEventAggregator events) .............