Можно ли связать один выбор ComboBox с двумя разными данными?
Я не уверен, возможно ли это или нет. Я создал ComboBox, как это...
<ComboBox Name="testType"
Margin="0,5,0,0"
IsTextSearchEnabled="True"
DisplayMemberPath="Description"
SelectedValue="{Binding MyClass.Id, Mode=TwoWay}"
SelectedValuePath="Id"/>
с кодом, который загружает доступные опции...
DataTable testCatList = TestTypeBase.GetAll();
testType.ItemsSource = testCatList.DefaultView;
так что он правильно отображает все элементы в MyClass. Когда пользователь делает выбор, поле Id в MyClass обновляется по назначению. Отлично.
Вот моя проблема: мой testCatList содержит как Id, так и Description для каждой из строк, и я хотел бы, чтобы оба эти поля были связаны с текущим экземпляром MyClass. Итак, вот что я попробовал:
<ComboBox Name="testType"
Margin="0,5,0,0"
IsTextSearchEnabled="True"
DisplayMemberPath="Description">
<ComboBox.SelectedValue>
<MultiBinding Converter="{???}">
<Binding Path="MyClass.Id" Mode="TwoWay"/>
<Binding Path="MyClass.Description" Mode="TwoWay"/>
</MultiBinding>
</ComboBox.SelectedValue>
</ComboBox>
Здесь я хотел бы, чтобы MyClass.Id был установлен на выбранный Id, а MyClass.Description был установлен на выбранное описание. Как вы можете видеть, я удалил SelectedValuePath, потому что мне больше не нужен идентификатор. Но я не знаю, что использовать для конвертера (см. Вопросительные знаки выше).
Любые идеи, о эксперты Stackru? Благодарю.
1 ответ
Если я правильно понял, попробуйте использовать SelectedItem
собственность вместо SelectedValue
, Таким образом, вы получите выбранный MyClass
экземпляр и конечно все его свойства.
SelectedItem="{Binding CurrentSelectedMyClassItem}"