组合不使用MVVM和XAML进行更新

时间:2013-02-27 13:30:56

标签: c# xaml mvvm

我在使用MVVM方法在XAML中使用DataBinding组合时遇到了麻烦。

我在后面的代码中设置了组合的源代码:

AgesViewModel agesViewModel = new AgesViewModel();
comboAge.SelectedValuePath = "AgeID";
comboAge.DisplayMemberPath = "Age";
comboAge.ItemsSource = agesViewModel.GetAges(); 

组合的XAML是:

<ComboBox x:Name="comboAge"
          SelectedValue="{Binding AgeID}" />

组合是带有文本控件的页面的一部分,所有DataBind都很好。页面DataContext设置为ViewModel(carViewModel),它具有一个名为AgeID的属性。

因此,当组合项目更改时,我希望使用所选值更新carViewModel.AgeID。

每当我从组合中选择一个项目时,都不会更新。我做错了什么?

提前致谢

我正在使用XAML,C#4.5并在Visual Studio 2012中编写Windows应用商店应用程序。

1 个答案:

答案 0 :(得分:2)

如果您想要遵循MVVM模式,请在您的carViewModel绑定中使用ComboBox的数据。

换句话说:

<ComboBox x:Name="comboAge" ItemsSource="{Binding MyAgeList}" SelectedValue="{Binding AgeID}" />

更改ComboBox中的值时,这也会更新AgeID属性。

假设AgeID是int(它当然可以是你想要的任何东西),那么MyAgeList中的carViewModel就像这样定义:

public List<int> MyAgeList {get; set;}

// Constructor
public CarViewModel()
{
    MyAgeList = new AgesViewModel().GetAges();
}