0

如图所示,我在DataGrid中定义了一个ComboBoxComboBox是包含和属性的自定义类的列表。是财产,是财产。绑定到DataGrid上的属性。(请注意,DataGrid是一个视图。)ComboBox正确填充,并且ComboBox选择与属性的绑定也有效。一切都很好,适用于数据。问题在于ItemsSourceCodePickListNameIDDisplayMemberPathNameSelectedValuePathIDSelectedValueGLCode ItemsSourceItemsSourceGLCodeItemsSource数据网格。ComboBox 的文本块只是空白。显然,当 ComboBox ItemsSource 加载时,ComboBox无法DataGrid上的属性与ComboBoxGLCode上的属性相匹配。这些属性属于同一类型。WinForms 处理这种情况,但我无法让它在 WPF 中工作。 ItemsSourceID ItemsSource

<DataGrid ItemsSource="{Binding EntityDetailsView.View}">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
             <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                        <ComboBox ItemsSource="{BindingPath=DataContext.CodePickList, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
                                  DisplayMemberPath="Name" SelectedValuePath="ID" SelectedValue="{Binding GLCode, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
                                  IsEditable="False" IsReadOnly="False"/>
                 </DataTemplate> 
             </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
4

1 回答 1

0

事实证明,DataGrid 的 ItemsSource 中的 GLCode 来自数据库(通过实体框架)作为固定长度字符串(右填充)。ComboBox 的 ItemsSource 中的 ID 是一个普通的 C# 字符串。因此,值不匹配,现有数据不会显示。解决方案是在 ComboBox ItemsSource 中填充 ID 字符串。ComboBox 现在按预期工作。

于 2013-04-05T13:45:25.040 回答