我在这样的组合框中有一个数据网格控件:
<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
的整列。
那我怎么解决呢?
答案 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