WPF 组合框在下拉列表中显示实体名称而不是 DisplayMemberPath

Ker*_*ren 1 wpf combobox

我有以下组合框:

<ComboBox Name="cbBonusType" 
          DisplayMemberPath="BonusTypeName"  
          SelectedValuePath="ID" Width="150" Margin="10,0,0,0"                  
          SelectionChanged="cbBonusType_SelectionChanged"/>
Run Code Online (Sandbox Code Playgroud)

运行时:选择项目时,组合框显示正确的字符串。但是当 droppbox 打开时,droppbox 中显示的名称设置为实体的名称:“CaSaMa.WPF.UI.Competiotion.BonusType”。

为什么会这样,我该如何解决?

Ste*_*tes 5

最好的办法是覆盖对象上的 ToString - 这将使您在整个应用程序中显示一致。

希望有帮助!

只需重新阅读您的问题 - 认为我弄错了棍子的一端..您可以做的是像这样在控件上设置 ItemTemplate ;

      <ComboBox Name="cbBonusType" 
      ItemTemplate="{StaticResource DisplayTemplate}"
      SelectedValuePath="ID" Width="150" Margin="10,0,0,0"                  
      SelectionChanged="cbBonusType_SelectionChanged"/>
Run Code Online (Sandbox Code Playgroud)

然后像这样创建模板

    <DataTemplate x:Key="DisplayTemplate"
          DataType="{x:Type <YOURTYPE>}">
     <TextBlock Text="{Binding BonusTypeName}"/>
    </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

这是一个已知问题,遗憾的是,这是解决方法!

希望它有帮助..这次!:)

编辑:更新代码以防万一其他人想使用它!

圣。