English 中文(简体)
如何从现有的《观点模式》中获取观点
原标题:Right Way to access a View Model from an existing View Model

我对多国公司来说有些新鲜。 我不相信,我努力做些什么是最好的。

这里的情况是:

我有一个将显示另一个窗口的小型和小型设备。 我可以打电话my NewWindowView.Show(),但首先,我需要把我的新窗口的一些数据列入考试和测验。

我是否应将<条码>my NewWindowView和<条码>的新WindowViewModel/code>贴在“观点”上?

Here is an example:

class MainVM
{
    public void FindCustomer(string nameParial)
    {
       List<Customer> customers = ServiceCall.GetCustomers(nameParital);
       // This is the part I am not sure how to do.  I am not sure if this
       //  View Model should have a reference to a different view model and
       //  the view too.
       myNewWindowViewModel.CustomerList = customers;
       myNewWindowView.Show();
    }
}
最佳回答

我将把观点与任何观点分开。 我倾向于把他们视为一层,但只能相互交流。

因此,一种类型的oo模式可以将其置于顶端,它从不期望或关心观察型。

一种观点只能用于一种模式,但是一种疏忽,或者期望会使用哪一种观点。

一种观点是特定类型的观点。

你似乎认为,对我看来是错误的观点的谨慎态度。

如果是我的话,我就认为,主要核查机制要展示新的窗口,让主要核查机制摆脱对新窗口的适当看法。

这是我支持主要观点的观点。

class MainWindow : Window
{
     public MainWindow()
     {
          Initialize();
          DataContext = new MainVM();
     }

     public void FindCustomerClick(object sender, RoutedEventArgs args)
     {
          CustomerListView clv = new CustomerListView();
          clv.DataContext = (DataContext as MainVM).FindCustomer(search.Text);
          clv.Show();
     }
}

如你所知,意见模型采用一种方法,对客户ListViewModel进行扼杀和回归,然后应用于客户语言学数据目录。

问题回答

在你的观察模式中提出参考意见。 意见形成的观点和看法模式形成观点模式。

结束这种关切的一个简单办法是事件。 这样做的迅速和 d手办法是创建<代码>。 ChildViewModel property on their parent view model, and subsequentlyprocess PropertyChanged/ in the view, e.g.:

ParentViewModel vm = (ParentViewModel)DataContext;
vm.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "ChildViewModel")
    {
        MyChildWindow w = new MyChildWindow();
        w.Show(vm.ChildViewModel);
    }
};

Now every time the parent view model changes the ChildViewModel property, the parent view will open a new child view.

一种较快和不太干,的办法,是建立<条码>,使电文/密码>成为代表和<条码>,使电文/密码类别成为活动手和受保护的<条码>,该编码是你基识模型的一部分(假设你有)。 这使观点模式在何时建立儿童窗口方面更为明确。

请注意,如果家长认为模式对于了解儿童观点模式何时关闭很重要,儿童观点模式可能会暴露父母可以赞同的事件(或再次使用财产和<代码>)。 PropertyChanged activity.

请注意,在这两种情况下,在假定不征求意见的情况下,你可以撰写单位测试,核实观察模型打开了窗户(即引起事件)。

我曾使用过任何微型和轻型武器核查机制框架,但我所看到的是,这些工具旨在便利这类事情。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...