我在使用 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/