【问题标题】:How can I set the LISTBOX tooltip through XAML如何通过 XAML 设置 LISTBOX 工具提示
【发布时间】:2010-11-03 12:15:10
【问题描述】:

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

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

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

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

实体如下

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

绑定如下

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

【问题讨论】:

  • 你检查过VS的输出吗?因为绑定没有抛出任何关于绑定的异常信息
  • 实际上,没有显示任何工具提示..
  • 请不要在您的标题中添加“(WPF, C#)”之类的内容。这就是标签的用途。
  • 当然,我会在下次发布问题时处理相同的问题。感谢您提供信息。

标签: c# wpf


【解决方案1】:

不要在 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 上的哪个位置,该绑定都会将当前选定的项目显示为工具提示。

【讨论】:

  • @priyanka:我用更多解释更新了我的答案。它回答了你的问题吗?您在 ListBox 上设置了一个工具提示,因此它是相对于 ListBox 的 DataContext 绑定的,我猜它是空的。在 ListBoxItem 上设置它会相对于 ListBoxItem 的 DataContext 绑定,这将是您的 ItemsSource 列表中的项目。
猜你喜欢
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 2013-05-17
  • 2015-06-21
相关资源
最近更新 更多