我试图将ViewModel公开为页面上的静态资源,以便绑定可以轻松访问它。
TestViewModel.cs
namespace Test.WPFUI.Home
{
public class TestViewModel....
HelloWorldView.Xaml
xmlns:local="clr-namespace:Test.WPFUI.Home"
<UserControl.Resources>
<local:TestViewModel x:Key="mainPageViewModel" />
</UserControl.Resources>
无法找到TestViewModel。我可以请一些提示或建议。
从http://www.telerik.com/help/silverlight/gridview-troubleshooting-blank-cells.html
获取帮助public class LoanViewModel : ScreenViewModelBase<LoanViewModel>, IRecord, INotifyPropertyChanged
{
public LoanViewModel(IEventAggregator events) .............
答案 0 :(得分:1)
听起来你的初始问题没有完整的xmlns定义。您通常需要命名空间和程序集。
根据我的经验,最简单的方法就是让intellisense为你做到这一点。只需开始输入您想要的命名空间,只要在引用的项目中,就会有一个自动完成选项。
您的第二个问题是由于没有默认构造函数。你写了这个:
<local:TestViewModel x:Key="mainPageViewModel" />
将调用默认构造函数。但是,你在这里定义一个构造函数:
public LoanViewModel(IEventAggregator events) .............
删除提供的(无参数)默认构造函数。我将采取疯狂的猜测,并说XAML创建正确的IEventAggregator
并不简单或不需要,所以我看到两个选择:
你没有真的在构造函数中需要该参数。只需在视图模型中添加一个默认构造函数,就可以了!
你确实需要该参数,因此从XAML实例化不是一个好主意。从视图构造函数的其他位置传入视图模型。
如果您认为可以从XAML实例化正确的对象,请使用此帖子调用参数化的构造函数:Calling a parameterized constructor from XAML
在我看来,将真正的常规类放入XAML并不是一个好的模式,所以我不愿意。按照惯例,我的意思是根本不相关。