将数据从数据库绑定到 WPF 数据网格模板列(模板列具有组合框)时出现问题



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

<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>

会发生什么 我想发生什么

您没有为数据网格指定项源? 项源应绑定到可观察集合,如下所示:

ItemsSource="{Binding ListOfMaterial}"

最新更新