c# - 组合不使用 MVVM 和 XAML 更新

标签 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 商店应用程序。

最佳答案

如果您想遵循 MVVM 模式,请在您的 carViewModel 中提供 ComboBox 的数据。并绑定(bind)到它。

换句话说:

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

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

假设 AgeID 是 int (当然,它可以是任何你想要的)然后 MyAgeList应该在 carViewModel 中这样定义:
public List<int> MyAgeList {get; set;}

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

关于c# - 组合不使用 MVVM 和 XAML 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113365/

相关文章:

c# - Roslyn/Find References - 无法正确加载工作区

c# - 创建、刷新 WPF TreeView 并记住没有 XAML 的扩展节点

c# - Mvvm 模型 View 模型

debugging - MvvmLight打印消息进行调试

c# - 使用 RequiredFieldValidator 验证服务器控件中的文本框

c# - 创建任务管理器之类的图表

c# - Windows Phone 8 中缺少 ButtonBase.Click

c# - 当集合为空时,UWP XAML 抛出未处理的异常

c# - 如何在我的项目中重用 xaml 命名空间定义

WPF ProgressBar 不更新