0

我的组合框出现问题,并试图获取框中显示的文本。我将 ItemsSource 绑定到 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>

告诉我是否需要发布其他内容。谢谢

4

1 回答 1

1

我认为您的 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;
}
于 2010-09-29T19:27:56.367 回答