我有以下组合框:
<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”。
为什么会这样,我该如何解决?
最好的办法是覆盖对象上的 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)
这是一个已知问题,遗憾的是,这是解决方法!
希望它有帮助..这次!:)
编辑:更新代码以防万一其他人想使用它!
圣。