У меня есть ComboBox
, который имеет SortedList<int, double>
как ItemsSource
, который содержит количество предметов и цену (что довольно сложно сделать). Пользователь может выбрать количество элементов, а на textbox
на странице показана цена за эти товары. Следовательно, я установил DisplayMember
в NumberOfItems и ValueMember
в цену. Это прекрасно работает.Bind ComboBox to Displaymember to Object
Однако теперь я хочу сохранить количество элементов в классе Orders; не цена! Я не мог найти примеров того, как это сделать, только привязка к SelectedValue, чего я не хочу делать. (I'am хорошо известно, что такое использование является выпадающий список совсем «наоборот» :))
Я попытался связывания с SelectedItem, но это не похоже на работу:
BindingOperations.SetBinding(NumberOfItemsCombo, ComboBox.SelectedItemProperty, new Binding("NumberOfItems") { Source = Order});
Можно ли связать NumberOfItems с чем-то вроде «SelectedDisplayValue»?
Спасибо!
Изменить: Пример: SortedList содержит следующие значения:
Index NumberOfItems Price
[0]: {[1, 41]}
[1]: {[2, 82]}
[2]: {[3, 123]}
[3]: {[4, 164]}
[4]: {[5, 205]}
[5]: {[6, 246]}
[6]: {[7, 287]}
[7]: {[8, 328]}
[8]: {[9, 369]}
[9]: {[10, 410]}
выпадающий список должен Dispay в NumberOfItems столбцов (т.е. 1 - 10). Если пользователь выбирает значение, например 7, текстовое поле отображает цену в примере 287. Класс заказа имеет свойство NumberOfItems, которое я хочу связать с ComboBox. Поэтому, как только свойство установлено на определенное число, скажем, 6, выпадающий список должен отображать 6 и текстовое поле 246.
Edit II:
Благодарности к Liero теперь он отлично работает в XAML. Теперь мне нужно только привязать текстовое поле в коде. Однако, это не работает:
BindingOperations.SetBinding(PriceTextBox, TextBox.TextProperty, new Binding() { Source=ComboBox, Path = new PropertyPath("SelectedItem.Price") });
Фигурные это: направление не было. Теперь это работает!
BindingOperations.SetBinding(PriceTextBox, TextBox.TextProperty, new Binding() { Source=ComboBox, Path = new PropertyPath("SelectedItem.Price"), Mode = BindingMode.OneWay });
Я застрял в этом sentense: 'Тем не менее, теперь я хочу, чтобы сохранить количество элементов в классе заказов; не цена! 'Попробуйте переформулировать свой вопрос или предоставить текущий код. Что теперь ваш ItemsSource? – Liero