WPF运行时修改ComboBox显示文本问题求助
解决WPF ComboBox显示类名而非指定文本的问题
方法1:重写clsFlight类的ToString()方法
WPF的ComboBox默认会调用绑定对象的ToString()方法生成显示文本,默认实现返回类的全名。直接重写clsFlight的ToString()方法,返回你需要的格式即可:
internal class clsFlight { public string FlightID { get; set; } public string FlightNumber { get; set; } public string AircraftType { get; set; } public override string ToString() { return $"{FlightNumber} - {AircraftType}"; } }
修改后无需改动其他代码,ComboBox会自动使用该方法返回的文本作为显示内容。
方法2:在XAML中配置ComboBox的显示模板
如果不想修改实体类逻辑,可以直接在XAML中自定义ComboBox的显示模板:
方式2.1 使用ItemTemplate组合多属性
找到主窗口XAML中的cbChooseFlight控件,添加ItemTemplate定义:
<ComboBox x:Name="cbChooseFlight"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} - {1}"> <Binding Path="FlightNumber"/> <Binding Path="AircraftType"/> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
方式2.2 新增计算属性后使用DisplayMemberPath
先在clsFlight中添加计算属性:
internal class clsFlight { public string FlightID { get; set; } public string FlightNumber { get; set; } public string AircraftType { get; set; } public string FlightDisplayText => $"{FlightNumber} - {AircraftType}"; }
然后在XAML中指定DisplayMemberPath:
<ComboBox x:Name="cbChooseFlight" DisplayMemberPath="FlightDisplayText"/>
或者在后台代码中设置:
cbChooseFlight.DisplayMemberPath = "FlightDisplayText";
内容的提问来源于stack exchange,提问作者Disaster3209
相关产品推荐
相关产品推荐

