首页 > 解决方案 > 将数据库中的数据绑定到 WPF DatagridTemplateColumn 时出现问题(模板列有一个组合框)

问题描述

我正在尝试使用 Caliburn.Micro 将数据库中的数据绑定到 WPF 中的数据网格。Caliburn 非常适用于标准文本列,但是当我尝试将数据绑定到模板列时,数据不会显示在屏幕上。例如,在 Material Item 列中,项目仅通过简单的绑定显示在视图中。但是当我尝试使用带有组合框的模板列时,同样的事情不会发生。这里的目标是使用 Bindablecollection 将数据从数据库中提取到视图中......然后有一个下拉菜单可以从 Material Status、Ordered、Not in Stock、In Stock 中进行选择。将过去选择的状态(例如,无库存)更改(例如,有库存)及其在许多应用程序中是一个非常简单的想法。这是代码和正在发生的事情的图片。

            <DataGrid AutoGenerateColumns="False"
                      ScrollViewer.CanContentScroll="True"
                      ScrollViewer.VerticalScrollBarVisibility="Auto"
                      ScrollViewer.HorizontalScrollBarVisibility="Auto"
                      CanUserAddRows="False"
                      x:Name="ProjectMaterialList"
                      SelectedItem="{Binding SelectedMaterialItem}"
                      Margin="10,10,10.333,10">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="MaterialId"
                                        Binding="{Binding MaterialId}"
                                        CanUserResize="False"
                                        Visibility="Hidden" />
                    <DataGridTextColumn Header="Project"
                                        Binding="{Binding ProjectName}"
                                        CanUserResize="False"
                                        Width="15*" />
                    <DataGridTextColumn Header="Type"
                                        Width="7*"
                                        Binding="{Binding MaterialType}"
                                        CanUserResize="False" />
                    <DataGridTextColumn Header="Quantity"
                                        CanUserResize="False"
                                        Binding="{Binding MaterialQuantity}"
                                        Width="5*" />
                    <DataGridTextColumn Header="Unit"
                                        Binding="{Binding MaterialMeasureType}"
                                        CanUserResize="False"
                                        Width="5*" />
                    <DataGridTextColumn Header="Measure"
                                        Binding="{Binding MaterialMeasure}"
                                        CanUserResize="False"
                                        Width="5*" />
                    <DataGridTextColumn Header="Item"
                                        Binding="{Binding MaterialItem}"
                                        CanUserResize="False"
                                        Width="15*" />
                    <DataGridTemplateColumn Header="Status"
                                            CanUserResize="False"
                                            Width="11*"
                                            x:Name="MaterialStatus">
                        <DataGridTemplateColumn.CellEditingTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding MaterialModel.MaterialStatus }" />

                            </DataTemplate>
                        </DataGridTemplateColumn.CellEditingTemplate>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox ItemsSource="{Binding Path=OrderStatuses }"
                                          SelectedItem="MaterialStatus" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>

                    </DataGridTemplateColumn>



                </DataGrid.Columns>

            </DataGrid>

发生 了什么我想要发生什么

标签: wpfcaliburn.microdatagridtemplatecolumn

解决方案


您没有为您的数据网格指定项目来源?项目源应该绑定到您的可观察集合,例如:

ItemsSource="{Binding ListOfMaterial}"

推荐阅读