簡體   English   中英

具有DisplayValue和SelectValue的WPF組合框無法正常工作

[英]WPF Combobox with DisplayValue and SelectValue not working correctly

我想我在這里想不到的東西,希望有人能幫助我。 我在實體框架中使用了此類:

    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有點令人困惑,因此只需澄清一下:我創建了想要ComboBox使用的VendorDetail列表,使用VendorDetail.VendorID和VendorDetail.VendorName,並將其設置為PartLists.VendorID,這是VendorDetail的外鍵。

那我做錯了什么呢?

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

SelectedValue="{Binding VendorID}"

這就解決了這個問題。 我以為這很簡單!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM