Можно ли связать один выбор 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}"
Другие вопросы по тегам