Wpf组合框与父/子表的数据绑定

时间:2012-11-05 15:19:01

标签: wpf data-binding

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

在Datagrid中我显示表“OrderDetails”的内容 现在问题是:我想将“PartId”字段显示为Combox。 combox应包含所有“Parts”并显示“Name”而不是PartId

(抱歉,我无法上传数据库布局图片)

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

显示数据网格和包含的Combobox, 但是

  1. 该值未正确显示。
  2. 如果我从组合框中选择任何内容,则datagrid的所有项都会获得所选的值。
  3. 你能帮我正确配置组合框吗?

1 个答案:

答案 0 :(得分:0)

您可能绑定到单个partsViewSource。

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

列表需要公共财产,因此每一行都有自己的列表。

class order
{
    public Int ID {get; private set;}
    public List<string> Parts { get; set }
}