显示数据网格的一个字段而不是整列

Display a field of datagrid instead of the whole column

我在这样的组合框中有一个数据网格控件:

 <ComboBox    DisplayMemberPath="{Binding CodeGDP_Collection/gdp_code}"  >
                        <ComboBoxItem >
                            <DataGrid  ItemsSource="{Binding CodeGDP_Collection}"   AutoGenerateColumns="False">
                                <DataGrid.Columns>
                                    <DataGridTextColumn Binding="{Binding gdp_code}" />
                                    <DataGridTextColumn Binding="{Binding gdp_nom}" />
                                    <DataGridTextColumn Binding="{x:Null}"/>
                                    <DataGridTextColumn Binding="{Binding gdp_ville}" />
                                    <DataGridTextColumn Binding="{Binding gdp_code_postal}"/>
                                </DataGrid.Columns>
                            </DataGrid>
                        </ComboBoxItem>
                    </ComboBox>

我希望当我 select 数据网格中的一行时,组合框中只会显示一个字段(例如 gdp_code)。

在当前情况下,gdp_code 的整个列显示在每个 selection 中。

那我该如何解决呢??

您应该将 ComboboxItem 绑定到 datagrid 的 selectedItem

要绑定 selectedItem,您必须向您的组合框提供 itemsSource,这在这种情况下无益。 您可以将 bing combobox.text 简化为您的值,即使它不在列表中,组合框也会显示它。

您可以将网格中的选定项目绑定到 属性,然后将组合框文本设置为选定的 属性 值。

我前段时间做过这个,下面的代码不是用设计器写的,所以可能会有错误,但它是给你一个想法。

<ComboBox 
DisplayMemberPath="DataContext.MySelectedItem.gdp_code" 
Text="{Binding MySelectedItem.gdp_code}" 
IsEditable="True">
<ComboBox.Items>
    <ComboBoxItem>
        <ComboBoxItem.Template>
            <ControlTemplate>
                <DataGrid SelectedItem={Binding MySelectedItem} ItemsSource="{Binding CodeGDP_Collection}"   AutoGenerateColumns="False">
                    <DataGrid.Columns>
                       <DataGridTextColumn Binding="{Binding gdp_code}" />
                       <DataGridTextColumn Binding="{Binding gdp_nom}" />
                       <DataGridTextColumn Binding="{x:Null}"/>
                       <DataGridTextColumn Binding="{Binding gdp_ville}" />
                       <DataGridTextColumn Binding="{Binding gdp_code_postal}"/>
                    </DataGrid.Columns>
                </DataGrid>
            </ControlTemplate>
        </ComboBoxItem.Template>
    </ComboBoxItem>
</ComboBox.Items>