WPF ComboBox получить отображаемый текст - PullRequest
0 голосов
/ 29 сентября 2010

У меня проблема с полем со списком, и я пытаюсь получить текст, который отображается в этом поле.У меня есть ItemSource, связанный с SqlDataReader, и я пытаюсь заполнить другое поле со списком, основываясь на том, какой элемент выбран в первом поле со списком.запрос на основе того, что выбрано в этом поле.Тем не менее, я не могу получить этот текст для моей жизни.Все, что я пробовал, всегда возвращает "System.Data.Common.DataRecordInternal".Даже когда я пытаюсь "comboBox.Text", он возвращает это также несмотря на то, что он не отображается.Я сделал переплет неправильно?Или что-то не так с моим шаблоном элемента для поля со списком?

Вот соответствующий код:

<ComboBox Name="cbTables"  ItemsSource="{Binding ElementName=lstTables, Path=ItemsSource}" 
                              SelectionChanged="cbTables_SelectionChanged" >
                        <ComboBox.ItemTemplate>

                            <DataTemplate>
                                <Label Content="{Binding Path=TABLE_NAME}" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>

Скажите, нужно ли мне публиковать что-нибудь еще.Спасибо

1 Ответ

1 голос
/ 29 сентября 2010

Я не вижу ничего плохого в вашем коде xaml. DataRecordInternal - это правильный тип элемента для коллекции sql. Если вы хотите объект clr - привяжите управление к списку объектов clr. Но если вы хотите просто строку - вы можете попробовать это решение:

<ComboBox Name="cbTables" ItemsSource="{Binding ElementName=lstTables, Path=ItemsSource}" 
DisplayMemberPath="TABLE_NAME" SelectedValuePath="TABLE_NAME" SelectionChanged="cbTables_SelectionChanged" />


private void cbTables_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var str = cbTables.SelectedValue;
}
...