You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:30:48