让我的视图模型显示在命名空间下拉列表中

本文关键字:命名空间 下拉列表 显示 我的 视图 模型 | 更新日期: 2023-09-27 18:31:44

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

测试视图模型.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>

找不到测试视图模型。请问一些提示或建议。

从 http://www.telerik.com/help/silverlight/gridview-troubleshooting-blank-cells.html 获得帮助

public class LoanViewModel : ScreenViewModelBase<LoanViewModel>, IRecord, INotifyPropertyChanged 
{
    public LoanViewModel(IEventAggregator events) .............

让我的视图模型显示在命名空间下拉列表中

听起来您最初的问题是没有完整的 xmlns 定义。通常需要命名空间和程序集。

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

第二个问题是由于没有默认构造函数。你写了这个:

<local:TestViewModel x:Key="mainPageViewModel" />

这将调用默认构造函数。但是,您可以在此处定义构造函数:

public LoanViewModel(IEventAggregator events) .............

这将删除提供的(无参数)默认构造函数。我将进行一个疯狂的猜测,并说创建正确的IEventAggregator并不简单,也不是 XAML 所需的,因此我看到了两种选择:

  1. 在构造函数中,您实际上并不需要该参数。只需将默认构造函数添加到您的视图模型,您就可以开始了!

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

如果你觉得可以从 XAML 实例化正确的对象,请使用这篇文章来调用参数化构造函数:从 XAML 调用参数化构造函数

在我看来,将真正的常规类放入 XAML 不是一个好的模式,所以我不会。我所说的常规,是指与视图完全无关。