Как установить подсказку LISTBOX через XAML - PullRequest
2 голосов
/ 30 июля 2010

У меня есть список в 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

1 Ответ

8 голосов
/ 30 июля 2010

Вместо установки свойства ToolTip в ListBox, установите его в ListBoxItems, применяя стиль:

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

Таким образом, у каждого ListBoxItem будет своя собственная подсказка, которая отображает значение для этого элемента.

Поскольку вы устанавливаете ItemSource непосредственно в ListBox, вы, вероятно, не установили DataContext, поэтому привязка не будет работать там.Если вы установите DataContext на список, то эта привязка будет отображать текущий выбранный элемент в качестве всплывающей подсказки независимо от того, где была указатель мыши в ListBox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...