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

WPF Combobox下拉列表Tooltip绑定失效问题求助

解决WPF ComboBox下拉项Tooltip为空的问题

问题出在绑定路径的大小写不匹配:你的ComboList类中Tooltip属性名是小写开头的Tooltip,但XAML里绑定的是大写开头的ToolTip,WPF绑定严格区分大小写,导致无法找到对应属性,所以下拉项Tooltip为空。

修正步骤

1. 修正XAML中的绑定路径

修改ComboBox.ItemContainerStyle里的绑定路径,和ComboList的属性名保持一致:

<ComboBox Name="CMB_PortCOM"
     Width="90"
     Style="{StaticResource MyCombo}"
     Margin="5,10,5,10"
     DisplayMemberPath="Name"
     SelectedValuePath="Id"
     ItemsSource="{Binding CMB_PortCOM_Source}"
     SelectedValue="{Binding CMB_PortCOM_SelectedValue}"
     SelectedItem="{Binding CMB_PortCOM_SelectedItem}"
     ToolTip="{Binding CMB_PortCOM_TooTip}">
     <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="ToolTip" Value="{Binding Tooltip}" />
        </Style>
     </ComboBox.ItemContainerStyle>
 </ComboBox>

如果想保留嵌套TextBlock的写法,只需要修正路径:

<Setter Property="ToolTip">
    <Setter.Value>
        <TextBlock Text="{Binding Path=Tooltip}" />
    </Setter.Value>
</Setter>

2. 可选:实现INotifyPropertyChanged(支持动态更新)

如果后续需要动态修改Tooltip内容并同步到UI,ComboList类需要实现INotifyPropertyChanged接口,否则数据变更后UI不会更新:

using System.ComponentModel;
using System.Xml.Serialization;

public class ComboList : INotifyPropertyChanged
{
    private int _Id;
    [XmlAttribute("Id")]
    public int Id
    {
        get => _Id;
        set 
        { 
            _Id = value;
            OnPropertyChanged(nameof(Id));
        }
    }

    private string _name;
    [XmlAttribute("Name")]
    public string Name
    {
        get => _name;
        set 
        { 
            _name = value;
            OnPropertyChanged(nameof(Name));
        }
    }

    private string _tooltip;
    [XmlAttribute("Tooltip")]
    public string Tooltip
    {
        get => _tooltip;
        set 
        { 
            _tooltip = value;
            OnPropertyChanged(nameof(Tooltip));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

完成以上修改后,ComboBox下拉项的Tooltip就能正常显示设备描述了。

内容的提问来源于stack exchange,提问作者Megamario

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:42:58