2009-09-28 2 views
0

Я следующие объектыC#/WPF: привязать ComboBox к двум элементам?

public int PersonAge { get; set; } 
public List<PersonGroup> PersonList { get; set; } 

public class PersonGroup() 
{ 
    public string Name { get; set; } 
    public string DefaultAge { get; set; } 
} 

Мой ComboBox привязан к PersonList, в то время как у меня также есть TextBox, который связан с Персонажа. Если пользователь вводит номер «20» в TextBox (PersonAge), я хочу выбрать соответствующую PersonGroup в ComboBox, и если пользователь выбирает элемент PersonGroup «Test1» из ComboBox, я хочу, чтобы TextBox отображался 10 в TextBox (потому что PersonList [1] будет, например, Name = "Test1"; DefaultAge = 10;)

Любые идеи, как решить эту проблему с помощью DataBinding?

Большое спасибо.

Приветствия, Джозеф

ответ

1

Off верхней части моей головы, вы можете попробовать с помощью SelectedValue и свойства SelectedValuePath на ComboBox:

<ComboBox x:Name="ComboBox" SelectedValuePath="DefaultAge" SelectedValue="{Binding PersonAge}"/> 
<TextBox Text="{Binding ElementName=ComboBox, Path=SelectedValue}"/> 

edit1: я думаю, что текстовое поле может связываться с Персонажа вместо этого, делает для чистых код imo .... не уверен, к сожалению, я не могу проверить его на данный момент.

+0

Спасибо, это работает как шарм! –

+0

Относительно edit1: Да, это работает еще лучше и предоставляет меньше кода :-) Cheers –

1

Вы можете выставить ListCollectionView, вместо необработанного списка. Настройте функцию Filter. И когда обновляется PersonAge, вы вызываете метод Refresh() с вашего вида. Что касается другой части - вы всегда можете привязываться к текущему элементу в виде коллекции. Например:

<TextBox Text="{Binding PersonList/DefaultAge}"/> 

Надеюсь, что это поможет.

+0

Спасибо за подсказку с ListCollectionView. Решение Bubblewrap более легко реализовать в текущем решении, но я уверен, что ваш поможет мне в решении следующих задач :-) Cheers –

+0

Вы всегда рады :) – Anvaka