在DataGrid的单元格中组合框

时间:2014-06-22 04:22:31

标签: c# wpf datagrid combobox

我有一个表名为“tblProducts”的数据库,其列标题为“ProductCode,Descriptions,UnitPirce,Quantity,TotalPrice”

我的WPF表单中有一个DataGrid,并手动创建列标题,如下所示:

<DataGrid x:Name="dataGridOrderedProducts" Margin="10,10,10,0" Grid.Row="3" Grid.ColumnSpan="4" VerticalAlignment="Center" Height="180" BorderThickness="1">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Product Code" MinWidth="120" FontSize="11"/>
            <DataGridTextColumn Header="Descriptions" MinWidth="200" FontSize="11"/>
            <DataGridTextColumn Header="Unit Price" MinWidth="100" FontSize="11"/>
            <DataGridTextColumn Header="Quantity" MinWidth="100" FontSize="11"/>
            <DataGridTextColumn Header="Total Price" MinWidth="100" FontSize="11"/>
        </DataGrid.Columns>
    </DataGrid>

我希望在“产品代码”列下的单元格中有一个ComboBox,以便用户可以选择产品并查询该ProductCode中的所有相关数据。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式执行此操作,

(i)。使用DataGridComboboxColom

 <DataGridComboBoxColumn Width="100" x:Name="cmbProduct" SelectedValueBinding="{Binding Code, Mode=TwoWay}" DisplayMemberPath="{Binding Code}"></DataGridComboBoxColumn>
</DataGrid.Columns>

(ii)使用DataTemplate

 <DataGridTemplateColumn Header="ProductCode">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Code}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <ComboBox ItemsSource="{Binding Codes}"></ComboBox>
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
    </DataGridTemplateColumn>