Проблемы с настройкой длительности ToolTip программно - PullRequest
1 голос
/ 06 июля 2011

Я столкнулся с ситуацией, когда мне нужно создать объект всплывающей подсказки и показать его, когда пользователь наводит курсор на определенные области в моем приложении.

Я могу заставить всплывающую подсказку отображаться нормально. Проблема в том, что мне нужно, чтобы через несколько секунд прошло. Я знаю о ToolTipService.SetShowDuration и пытался его использовать, но мне не повезло с большой удачей.

Вот что я получил в своем обработчике событий MouseMove:

_toolTip.Placement = PlacementMode.Relative;
_toolTip.Horizontal = e.X;
_toolTip.VerticalOffset = e.Y;
_toolTip.Content = stuffs;
_toolTip.IsOpen = true;

Я попытался установить следующее:

someObject.ToolTip = _toolTip;
ToolTipService.SetShowDuration(someObject, 5);

Ничего не меняется с последними двумя строками. Всплывающая подсказка все еще видна и остается видимой. Я использую сервис неправильно или что-то? Любые мысли будут высоко ценится!

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Я разработал обходной путь для этой проблемы.

Чтобы дать немного больше фона, у меня есть 3D-модель самолета внутри объекта WindowsFormsHost.Когда пользователь наводит указатель мыши на определенную часть, мне понадобилась всплывающая подсказка.

Я создал экземпляр всплывающей подсказки и в своем событии MouseMove, и я делаю что-то вроде этого:

// selectedPart will be null if no part is selected
if(selectedPart != null && prevSelectedPart != selectedPart)
{
    toolTip.IsOpen = false;
    host.ToolTip = toolTip;
    toolTip.IsOpen = true;
}
else if (prevSelectedPart == selectedPart  && prevSelectedPart != null)
{
    toolTip.IsOpen = true;
}
else
    toolTip.IsOpen = false;

Это помогает мне.

0 голосов
/ 06 июля 2011

Попробуйте это.

 <Border Name="border" ToolTip="some message" MouseEnter="border_MouseEnter" Background="red" Margin="50"/>

  ToolTip tool = new ToolTip();
        private void border_MouseEnter(object sender, MouseEventArgs e)
        {
        tool.Placement = PlacementMode.Relative;
        tool.HorizontalOffset = 100; 
        tool.VerticalOffset = 200;
        tool.Content = "stuffs";
        tool.IsOpen = true;
        border.ToolTip = tool;
        ToolTipService.SetShowDuration(border, 5000);
        }
...