【问题标题】:ComboBoxItems displaying object instead of property when selected选择时 ComboBoxItems 显示对象而不是属性
【发布时间】:2020-05-01 15:48:43
【问题描述】:

我遇到了以下问题:

问题: ComboBoxItems 显示完美,但在选择项目时显示整个对象。

1.点击组合框: ComboBoxItems 完美显示

2。选择了一个 ComboBoxitem: 显示整个 Entity Framework 对象,而不仅仅是项目名称。

以下是选择 ComboBoxItem 时显示的示例: System.Data.Entity.DynamicProxies.tblContainer_C0BE4F13C798ED380A1E249BFB338D265E97D4F4C7A880C5D813102738561025

期望的结果: Bout verre bouchon emery

这是我的代码的缩小版:

<ComboBox IsEditable = "True" ItemsSource="{Binding ProductsContainer}" SelectedValuePath="ContainerID">
                            <ComboBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock 
                                        FontSize="15"
                                        Width="100"
                                        HorizontalAlignment="Center"
                                        Text="{Binding ContainerName}" 
                                        TextWrapping="Wrap" />
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
</ComboBox>

这是 ComboBox 绑定的列表:

public virtual List<tblContainer> ProductsContainer { get { return db.tblContainer.ToList(); } }

ProductsContainer 具有以下属性:ContainerIDContainerName

【问题讨论】:

  • 添加类 tblContainer 的代码或至少为您的示例工作所需的最少代码。
  • 您可能不想将 IsEditable 设置为 true。然后不应用 ItemTemplate。参见例如这里:stackoverflow.com/q/27636357/1136211

标签: c# wpf entity-framework mvvm combobox


【解决方案1】:

似乎在使用IsTextSearchEnabled="True"TextSearch.TextPath="ContainerName" 时有效。

<ComboBox IsEditable="True" ItemsSource="{Binding ProductsContainer}" SelectedValuePath="ContainerID" 
          IsTextSearchEnabled="True" TextSearch.TextPath="ContainerName">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock 
                    FontSize="15"
                    Width="100"
                    HorizontalAlignment="Center"
                    Text="{Binding ContainerName}" 
                    TextWrapping="Wrap" />
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

【讨论】:

  • 太好了,效果很好。非常感谢你的帮助!另外,几分钟前我刚刚尝试从原始代码中删除 IsEditable="True" 并且效果也很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 2022-01-23
相关资源
最近更新 更多