2011-07-06 2 views
1

툴팁 객체를 만들고 사용자가 내 응용 프로그램의 특정 영역을 가리키면 표시해야하는 부분을 발견했습니다.프로그래밍 방식으로 툴팁 지속 시간을 설정하는 데 문제가 있습니다.

툴팁이 잘 표시되도록 할 수 있습니다. 문제는 몇 초가 지난 후에 펑 소리가 나는 것이 필요하다는 것입니다. 나는 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

MouseOnter 이벤트로 코드를 푸는 것과 MouseOver로 푸시하는 것은 어떨까요? 이거 해봤 니? – Tigran

+0

잘 작동합니다. – Hukam

+0

실수로, MouseMove 이벤트에 있습니다. –

답변

0

문제의 해결 방법을 마련했습니다.

배경을 좀 더 알려주기 위해 WindowsFormsHost 개체 안에 항공기의 3D 모델이 있습니다. 사용자가 식별 된 부분 위로 마우스를 가져 가면 툴팁이 나타납니다.

나는 툴팁의 내 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

시도해보십시오.

<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); 
     } 
+0

프로그래밍 방식으로 ToolTip 개체를 만들어야합니다. 그렇게하면 ToolTipService.SetShowDuration이 도움이되지 않는 것 같습니다 : ( –

+0

편집과 함께 5 초 후에 툴팁이 사라 집니까? 전에 시도했지만 작동하지 않았습니다. :( –

관련 문제