我有以下组合框:
<ComboBox Name="cbBonusType"
DisplayMemberPath="BonusTypeName"
SelectedValuePath="ID" Width="150" Margin="10,0,0,0"
SelectionChanged="cbBonusType_SelectionChanged"/>
运行时: 选择项目时,组合框会显示正确的字符串。 但是当droppbox打开时,droppbox中显示的名称 all 设置为实体的名称:“CaSaMa.WPF.UI.Competiotion.BonusType”。
为什么会这样,我该如何解决?
答案 0 :(得分:4)
最好的选择是覆盖对象上的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>
这是一个众所周知的问题,这是遗憾的解决方法!
希望这有帮助......这一次! :)
编辑:更新代码只是因为其他人想要使用它!
STE。
答案 1 :(得分:0)
比XAML更容易......
<ComboBoxItem Content="This Value" Tag="This Value"/>
然后在代码背后:
GetValue=ComboBoxName.selecteditem.tag.tostring()
GetValue将是“This Value”而不是 “System.Windows.Controls.ComboBoxItem:This Value”