2014-04-13 4 views
4

코드 숨김으로 툴팁을 표시하려면 어떻게해야합니까? 아래 코드는 내 질문을 더 잘 정의합니다. 분명히 코드가 마우스 위치 등을 검사하는 것을 원하지 않습니다. 툴팁을 표시하는 방법입니다.WPF에서 코드 뒤에 툴팁을 표시하는 방법

private void UIElement_OnMouseMove(object sender, MouseEventArgs e) 
{ 
    // if mouse position equals certain coordinates show the tooltip 
} 

답변

8

다음과 같이 시도해보십시오 Main condition 필요

if (control.ToolTip != null) 
{ 
    // Main condition 
    if (control.ToolTip is ToolTip) 
    { 
     var castToolTip = (ToolTip)control.ToolTip; 
     castToolTip.IsOpen = true; 
    } 
    else 
    { 
     toolTip.Content = control.ToolTip; 
     toolTip.StaysOpen = false; 
     toolTip.IsOpen = true; 
    } 
} 

을, 제어를위한 ToolTip은 두 가지 방법으로 설정할 수 있으므로 :

First approach

<Button Name="TestButton" 
     ToolTip="TestToolTip" /> 

이러한 접근 방식은 가장 흔한. 이 경우 ToolTip의 내용은 객체이며 ToolTip 형식이 아닙니다. Second approach

<Button Name="TestButton" 
     Content="Test"> 

    <Button.ToolTip> 
     <ToolTip>TestToolTip</ToolTip> 
    </Button.ToolTip> 
</Button> 

이와 동일합니다 :이 경우

<Button Name="TestButton" 
     Content="Test"> 

    <Button.ToolTip> 
     TestToolTip 
    </Button.ToolTip> 
</Button> 

이 도구 설명의 내용 유형이 Tooltip 될 것입니다. 두 번째 경우에는 개체가 자동으로 TestToolTip 줄의 ToolTip 개체를 채 웁니다. 따라서이 방법은 약간 느리게 작동합니다.

XAML

: 아래
toolTip.Content = control.ToolTip; 

전체 예입니다 : 우리가 도구 설명에 여기 ToolTip 유형의 내용을 할당 할 때

따라서이 검사는 예외를 방지하기 위해 필요하다

<Grid> 
    <Button Name="TestButton" 
      Width="100" 
      Height="25" 
      Content="Test" 
      ToolTip="TestToolTip" /> 

    <Button Name="ShowToolTip" 
      VerticalAlignment="Top" 
      Content="ShowToolTip" 
      Click="ShowToolTip_Click" /> 
</Grid> 

Code-behind

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void ShowToolTip_Click(object sender, RoutedEventArgs e) 
    { 
     var toolTip = new ToolTip(); 

     if (TestButton.ToolTip != null) 
     { 
      if (TestButton.ToolTip is ToolTip) 
      { 
       var castToolTip = (ToolTip)TestButton.ToolTip; 
       castToolTip.IsOpen = true; 
      } 
      else 
      { 
       toolTip.Content = TestButton.ToolTip; 
       toolTip.StaysOpen = false; 
       toolTip.IsOpen = true; 
      } 
     } 
    } 
} 
+0

죄송합니다. 그러나 이것은 nullrefrenceexception을 제공합니다. – Vahid

+0

@Vahid : 내 편집을 참조하십시오, 전체 예제를 추가하십시오. –

+0

버튼을 사용해 주셔서 감사합니다.하지만 Canvas에서 MouseMove 이벤트가 작동하지 않습니다. – Vahid

관련 문제