【问题标题】:How can i pass an object from one class to another in WPF (MVVM)?如何在 WPF (MVVM) 中将对象从一个类传递到另一个类?
【发布时间】:2011-04-07 08:18:00
【问题描述】:

我正在学习 WPF 的 MVVM。我知道如何在 View、ViewModel、Model 中路由事件和拆分代码。我在我的 main-XAML 中有一个 TabControl,并将选项卡拆分为不同的视图。 我的问题是,我怎样才能将一个对象从一个类传递到另一个类? (从 MainWindow.cs 到 SubWindow.cs)

MainWindowRessources XAML:

....
<DataTemplate DataType="{x:Type vm:SubWindow}">
  <vw:SubWindow />
</DataTemplate>

<vm:SubWindow x:Key="subView" />
..

主窗口 XAML:

<Window.Resources>
  <ResourceDictionary Source="MainWindowResources.xaml" />
</Window.Resources>

...
..
<TabItem>
        <ContentControl Content="{StaticResource subView}" />
</TabItem>
...
..

【问题讨论】:

  • 是Model、View和ViewModel。没有模型视图。您可能需要正确理解您的概念。如果你的概念是错误的,那么你的代码就是错误的。
  • 使用构造函数或属性设置器将对象从 MainViewModel 传递到 SubViewModel。
  • MVVM 意味着永远不必说“mainwindow.cs”。

标签: wpf object mvvm


【解决方案1】:

您应该考虑实现中介者模式以允许您的视图模型相互通信。

更多信息请参见this Stackoverflow answer

【讨论】:

    【解决方案2】:

    根据上下文/用途,您可以在SubWindow 类上创建DependencyProperty,并将对象作为参数传递,例如&lt;vm:SubWindow MyNewProperty="some-value-or-object here"/&gt;

    关于创建 DependencyProperties 的信息:http://msdn.microsoft.com/en-us/library/ms752914.aspx

    你要传递的对象是什么?

    【讨论】:

    • 一开始我认为是自定义类或 XElement (xml)
    猜你喜欢
    • 2016-09-06
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多