2015-10-23 23 views
1

我想我在這裏失去了一些東西,我希望有人能幫助我。我有這個類我使用實體框架:WPF Combobox與DisplayValue和SelectValue無法正常工作

​​

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

現在所有的其他列,不同的是組合框的工作。

我知道VendorID有點令人困惑,所以只是爲了澄清:我創建了VendorDetail的列表,我希望ComboBox使用VendorDetail.VendorID和VendorDetail.VendorName,並將其設置爲PartList .VendorID是供應商詳細信息的外鍵。

那麼,我做錯了什麼?

回答

0

有人在另一個論壇告訴我這個問題。我應該使用SelectedValue而不是SelectedItem。所以換句話說,應該是這樣的:

SelectedValue="{Binding VendorID}" 

而且照顧了這個問題。我認爲這很簡單!