WPF Combobox与DisplayValue和SelectValue无法正常工作

时间:2015-10-23 16:06:07

标签: c#

我想我在这里错过了一些东西,我希望有人可以帮助我。我有这个我在实体框架中使用的类:

    public VendorDetail()
    {
        public long VendorID { get; set; }
        public string VendorName { get; set; }
        public string Address { get; set; }
    }

在SQL Server 2008中,我有一个名为PartsList的表,它与VendorDetail表具有外键关系。

在XAML中,我有一个Datagrid:

   <Grid DataContext="{StaticResource PartsListsSource}">
    <DataGrid x:Name="partsListsDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True"
            ItemsSource="{Binding}"
            RowDetailsVisibilityMode="VisibleWhenSelected">
               <DataGrid.Columns>
                   <DataGridTextColumn x:Name="partsListIDColumn" Binding="{Binding PartsListID}"
                    Header="Parts List ID" Width="SizeToHeader" />
                   <DataGridTextColumn x:Name="partIDColumn" Binding="{Binding PartID}" Header="Part ID"
                    Width="SizeToHeader" />
                        <DataGridTemplateColumn x:Name="vendorNameColumn"
                                          Width="Auto"
                                          Header="Vendor Name">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DataContext.VendorDetails}"
                                              DisplayMemberPath="VendorName"
                                              SelectedValuePath="VendorID"
                                              SelectedItem="{Binding VendorID}"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn x:Name="vendorPartNoColumn" Binding="{Binding VendorPartNo}"
                        Header="Vendor Part No" Width="SizeToHeader" />
                    <DataGridTextColumn x:Name="descriptionColumn" Binding="{Binding Description}"
                        Header="Description" Width="SizeToHeader" />
                </DataGrid.Columns>
    </DataGrid>
</Grid>

现在所有其他列都在工作,但ComboBox除外。

我知道VendorID有点令人困惑,所以只是为了澄清:我创建了一个VendorDetail列表,我希望ComboBox使用它,使用VendorDetail.VendorID和VendorDetail.VendorName,并设置为PartLists。 VendorID是VendorDetail的外键。

那么我做错了什么呢?

1 个答案:

答案 0 :(得分:0)

另一个论坛的某个人告诉我这个问题。我应该使用SelectedValue而不是SelectedItem。换句话说,应该是这样的:

SelectedValue="{Binding VendorID}"

这就解决了这个问题。我觉得这很简单!