3

我是 wpf 和 DataBinding 的新手。我在一个小应用程序中尝试了 wpf。现在我在将 CollectionViewSource 与组合框结合使用时遇到了问题

在 Datagrid 中,我显示表“OrderDetails”的内容现在的问题:我想将字段“PartId”显示为 Combox。组合框应包含所有“部件”并显示“名称”而不是 PartId

(对不起,我无法上传 DB-layout 的图片)

OrderDetails : Id ,OrderId,PartId,Count

表格部件ID、名称、描述、价格

<DataGrid Margin="80,0,0,0" Background="Transparent" HeadersVisibility="Column" 
  ItemsSource="{Binding Source={StaticResource projectsOrderdetailsViewSource}}">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Fahrzeug" Width="SizeToHeader">
            <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                     <ComboBox  DisplayMemberPath="Name"
                       ItemsSource="{Binding Source={StaticResource partsViewSource}}" 
                       SelectedValue="{Binding Path=ID}"
                       SelectedValuePath="{Binding Path=PartId}"/>
                 </DataTemplate>
             </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>
....

显示数据网格和包含的组合框,但是

  1. 该值未正确显示。
  2. 如果我从组合框中选择任何内容,则数据网格的所有项目都会获得选定的值。

你能帮我正确配置组合框吗

4

1 回答 1

0

您可能绑定到单个partsViewSource。

partsViewSource 需要是 projectOrderdetailsViewSource 的一个属性,所以每一行都有它自己的 partsViewSource

该列表需要一个公共属性,因此每一行都有自己的列表。

class order
{
    public Int ID {get; private set;}
    public List<string> Parts { get; set }
}
于 2012-11-05T16:32:41.170 回答