1

我有以下组合框:

<ComboBox Name="cbBonusType" 
          DisplayMemberPath="BonusTypeName"  
          SelectedValuePath="ID" Width="150" Margin="10,0,0,0"                  
          SelectionChanged="cbBonusType_SelectionChanged"/>

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

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

4

2 回答 2

5

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

希望有帮助!

只需重新阅读您的问题 - 认为我弄错了。您可以做的是在控件上设置 ItemTemplate ,而不是像这样;

      <ComboBox Name="cbBonusType" 
      ItemTemplate="{StaticResource DisplayTemplate}"
      SelectedValuePath="ID" Width="150" Margin="10,0,0,0"                  
      SelectionChanged="cbBonusType_SelectionChanged"/>

然后像这样创建模板

    <DataTemplate x:Key="DisplayTemplate"
          DataType="{x:Type <YOURTYPE>}">
     <TextBlock Text="{Binding BonusTypeName}"/>
    </DataTemplate>

这是一个已知问题,可悲的是,这是解决方法!

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

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

圣。

于 2012-10-23T12:02:58.657 回答
0

它比这更容易......在 XAML 中:

<ComboBoxItem Content="This Value" Tag="This Value"/>

然后在后面的代码中:

GetValue=ComboBoxName.selecteditem.tag.tostring()

GetValue 将是“这个值”而不是“System.Windows.Controls.ComboBoxItem:这个值”

于 2016-05-30T19:17:58.100 回答