显示datagrid的字段而不是整列

时间:2015-02-11 10:31:40

标签: c# wpf xaml mvvm datagrid

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

 <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>

我想在数据网格中选择一行时,组合框中只会显示一个字段(例如gdp_code)。

在当前情况下,每个选择中都会显示gdp_code的整列。

那我怎么解决呢?

2 个答案:

答案 0 :(得分:1)

对于绑定selectedItem,您必须将itemsSource提供给组合框,这在这种情况下是无益的。 你可以简单地将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>

答案 1 :(得分:0)

您应该在datagrid的selectedItem上绑定ComboboxItem