c# - 如何通过 XAML 设置 LISTBOX 工具提示

标签 c# wpf

我在 WPF 中有一个列表框,如下所示

<ListBox Name="lstName" DisplayMemberPath ="ListName" ToolTip="{Binding Path=ListName}" />

我的要求是,我在列表框中显示的项目也应该出现在工具提示中。即,如果项目是“Item1”、“Item2”等,那么当用户通过鼠标指向(悬停)到“Item1”时,工具提示应显示“Item1”。其他人也一样

所以我的 DisplayMemberPath 设置为我应该显示的属性(并且它正确显示)。但是,工具提示根本没有出现。

实体如下

public class ItemList
{
  public string ListName { get; set; }
}

绑定(bind)正在发生

this.lstName.ItemsSource = GetData(); // Assume that the data is coming properly

最佳答案

不是在 ListBox 上设置 ToolTip 属性,而是通过应用样式在 ListBoxItems 上设置它:

<ListBox Name="lstName" DisplayMemberPath="ListName">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ToolTip" Value="{Binding ListName}"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

这样,每个 ListBoxItem 都会有自己的工具提示,显示该项目的值。

由于您直接在 ListBox 上设置 ItemsSource,您可能没有设置 DataContext,因此 Binding 在那里不起作用。如果您确实将 DataContext 设置为列表,那么无论鼠标在 ListBox 上的什么位置,该绑定(bind)都会将当前选定的项目显示为工具提示。

关于c# - 如何通过 XAML 设置 LISTBOX 工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368510/

相关文章:

c# - 使用 PropertyChangedCallback 支持添加动态属性的最佳实践?

c# - 为什么 Windows 7 无法加载程序集 PresentationFramework.Aero2?

c# - 具有数据绑定(bind)和常量字符串的 WPF 窗口标题

c# - 获取对具有他的名字的对象的引用c#

c# - Azure SDK 1.3 打开两个浏览器窗口(或选项卡)

c# - 如何在 SQL 查询结果中动态添加行

C# WPF OnPaint 方法替代?

WPF "Lazy"视觉画笔

c# - 在 ModalPopupExtender okcontrolid clicked 上执行服务器端代码

C# 是否需要在 getter 和 setter 中进行锁定?