【问题标题】:Creating a viewmodel in MVVM在 MVVM 中创建视图模型
【发布时间】:2013-12-06 01:04:35
【问题描述】:

我不知道如何为下面的组合框编写视图模型类。

假设我有两个表,即:CarsEngineMakers

汽车表:

CarID
CarName
EngineMakerID (Foreign Key)

EngineMakers 表:

EngineMakerID
EngineMakerName

现在在组合框中,我想在列表中显示name of the EngineMaker。现在,当我保存更改时,EngineMakerID in Cars 表应该会更新。如何为上述问题编写视图模型?

【问题讨论】:

  • 首先,你有Model层吗? ViewModel 基本上是将ModelView 连接起来的一种方式。当我说基本的时候,我的意思是非常基本的:)
  • 我有我的模型,我的视图中也有组合框。我对视图模型有一个非常基本的想法。但我不知道如何为视图模型编写代码。是的,我已经在网上搜索了有关编写视图模型的信息,但我对此一无所知。如果有人通过记住上述示例或类似示例来解释我的视图模型,那么我会非常清楚。
  • 我明白,我也开始了,这件事我还在挣扎。这个想法是创建某种 BLLesque 类。我假设您在View 中实现了OnPropertyChanged()I 会做的是检查构造函数中是否有来自 Class 的对象。很详细的东西,我给你一些链接,对不起。 www.galasoft.ch/mvvm/(优秀的轻量级工具包); msdn.microsoft.com/en-us/library/windowsphone/develop/…(一些例子)

标签: c# wpf silverlight xaml mvvm


【解决方案1】:

您基本上希望拥有引用发动机制造商型号的汽车表

这应该也有帮助

http://blog.cylewitruk.com/2010/09/wpf-combobox-and-databinding-datacontext-itemssource-displaymemberpath-selecteditem-selectedvalue-selectedvaluepath/

//模型

public class Cars
{
    public int CarID {get;set}
    public int CarName {get;set}
    // Foreign key
    public int EngineMakerID { get; set; }

    // Navigation properties
    public virtual EngineMakers  EngineMakers  { get; set; }
}
public class EngineMakers
{
    public int EngineMakerID {get;set}
    public int EngineMakerName {get;set}
    // Navigation properties
    public virtual List<EngineMakers> Courses { get; set; }
}

// 视图模型

  public class MainWindowViewModel : ViewModel
    {

         public ObservableCollection<Cars>  Cars { get; private set; }
         public Cars SelectedSourceCars { get; set; }
    }

//绑定

<ComboBox
    ItemsSource="{Binding Cars, Mode=OneWay}"
    DisplayMemberPath="Name"
    SelectedItem="{Binding SelectedSourceCars}" />

【讨论】:

  • 很好的答案,但 Kushi 不要忘记实例化您的 ViewModel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2010-12-07
  • 2012-06-08
相关资源
最近更新 更多