2009-07-15 5 views
1

Я не могу установить выбранное значение выпадающего списка.Связывание с ComboBox в WPF

это как я делаю.

ComboBox x:Name="cmbProjectStatus" ItemsSource="{Binding ItemListCollection}" 
     DisplayMemberPath="Name" 
     SelectedValuePath="ID" 
     SelectedValue="{Binding Path=ItemList.ID}" 
     SelectedItem="{Binding Path=ItemList}" 
     HorizontalAlignment="Stretch" VerticalAlignment="Center" /> 

Я использую MVVM шаблон в моем проекте

Пожалуйста, помогите ...

ответ

4

, но ждать, выбранное значение определяется потому, что вы установили SelectedItem и selectedvaluepath;) Вы не должны набор SelectedValue и
EDIT
ITEMLIST seted, как существует SelectedItem в ItemListCollection

Это должно работать

ComboBox x:Name="cmbProjectStatus" ItemsSource="{Binding ItemListCollection}" 
      DisplayMemberPath="Name" 
      SelectedValuePath="ID" 
      SelectedItem="{Binding Path=ItemList}" 
      HorizontalAlignment="Stretch" VerticalAlignment="Center" /> 

, если вы хотите, чтобы он работал в вашем случае просто переопределить Equals метод в классе Item как этот

public class Item 
    { 
     ... 
     public override bool Equals(object obj) 
     { 
      Item i = (Item)obj; 
      if (i.ID == this.ID) 
       return true; 
      return base.Equals(obj); 
     } 
     ... 
    } 
+0

Что делать, если вы не можете переопределить Equals, потому что это класс, который вы не можете modifiy? (третье лицо). Есть ли способ справиться с этим без класса обертки? – SuperJMN

+0

Я бы создал новый класс ex. ItemViewModel, который содержит Item, и имеет Equals override там, после использования в качестве источника для combobox –

+0

Это то, что я закончил делать! Я думал, что есть другой способ, не обертывая его или не перекрывая Equals. – SuperJMN

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