Можно ли привязать один выбор ComboBox к двум разным данным? - PullRequest
0 голосов
/ 08 февраля 2012

Я не уверен, возможно ли это или нет. Я создал 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, потому что мне больше не нужен идентификатор. Но я не знаю, что использовать для конвертера (см. Вопросительные знаки выше).

Есть идеи, о, эксперты из StackOverflow? Спасибо.

1 Ответ

0 голосов
/ 08 февраля 2012

Если я правильно понял, попробуйте использовать свойство SelectedItem вместо SelectedValue.Таким образом, вы получите выбранный экземпляр MyClass и, конечно, все его свойства.

SelectedItem="{Binding CurrentSelectedMyClassItem}"
...