我在 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/