绑定到DataGridComboBox

时间:2017-08-18 09:13:52

标签: c# wpf

我知道这已被问过几次,但是我无法让绑定工作在我的DataGridComboBox上,它根本就不会显示。有人能告诉我我的方式错误吗?

C#

IList<ServiceCodes> servicecodes = App.GetInfo.GetServiceCodes();
newinvoice.INVItemsDataGrid.DataContext = servicecodes;
newinvoice.ShowDialog();

XAML

<DataGrid x:Name="INVItemsDataGrid" DataContext="{Binding}">
    <DataGrid.Columns>
        <DataGridComboBoxColumn x:Name="INVSCDropDown" DisplayMemberPath="CodeName" SelectedValuePath="CodeName" SelectedValueBinding="{Binding CodeName}" />
    </DataGrid.Columns>
</DataGrid>

感谢您一如既往的帮助。

1 个答案:

答案 0 :(得分:1)

您需要做的第一件事是将ItemsSource的{​​{1}}属性设置为DataGrid

完成此操作后,您可以将IEnumerable绑定到另一个或同一个ComboBox,如下所示:

IEnumerable

...虽然将<DataGrid x:Name="INVItemsDataGrid" ItemsSource="{Binding}"> <DataGrid.Columns> <DataGridComboBoxColumn x:Name="INVSCDropDown" DisplayMemberPath="CodeName" SelectedValuePath="CodeName" SelectedValueBinding="{Binding CodeName}"> <DataGridComboBoxColumn.ElementStyle> <Style TargetType="{x:Type ComboBox}"> <Setter Property="ItemsSource" Value="{Binding Path=., RelativeSource={RelativeSource AncestorType=DataGrid}}" /> </Style> </DataGridComboBoxColumn.ElementStyle> <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="{x:Type ComboBox}"> <Setter Property="ItemsSource" Value="{Binding Path=., RelativeSource={RelativeSource AncestorType=DataGrid}}" /> </Style> </DataGridComboBoxColumn.EditingElementStyle> </DataGridComboBoxColumn> </DataGrid.Columns> </DataGrid> ComboBox绑定到同一个源集合没有多大意义。但你至少应该明白这一点。