显示数据网格的一个字段而不是整列
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>
我在这样的组合框中有一个数据网格控件:
<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>