2013-02-27 4 views
1

У меня проблема с DataBinding комбо в XAML с использованием метода MVVM.Комбо не обновляется с использованием MVVM и XAML

Я установил источник в комбо в код следующим образом:

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.

ответ

2

Если вы хотите следовать шаблону MVVM, есть данные выпадающий список также доступен в ваших carViewModel и свяжите.

Другими словами:

<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(); 
} 
+0

ОК, я сделал это, но у меня есть одни и те же результаты. XAML для моего прихода теперь выглядит следующим образом: Sun

+0

И мой CarViewModel теперь выглядит следующим образом: общественный CarViewModel() { AgeList = новый AgesViewModel(). GetAges(); } public ObservableCollection AgeList {get; задавать; } – Sun

+0

Почему AgeList представляет собой коллекцию ViewModels ?? – Blachshma

Смежные вопросы