다음과 같이 시도해보십시오 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;
}
}
}
}
죄송합니다. 그러나 이것은 nullrefrenceexception을 제공합니다. – Vahid
@Vahid : 내 편집을 참조하십시오, 전체 예제를 추가하십시오. –
버튼을 사용해 주셔서 감사합니다.하지만 Canvas에서 MouseMove 이벤트가 작동하지 않습니다. – Vahid