0
ToolTip
안에 windows 양식 패널을 호스팅하려고합니다. 다음은 ToolTip
에 대한 Xaml 코드와 클래스입니다.wpf 툴팁 내에서 WindowsFormHost 사용
문제는 패널이 색상을 변경하지 않는 windowsFormsHost를 사용하는 경우입니다. 즉, ToolTip
은 거기에 있다는 것을 알지 못합니다.
내가 제대로하고 있습니까?
나는 버튼을 클릭하면,ToolTip
이 있지만, 기본 유지 (나는 색상을 변경할 수 있어요 경우 나 카메라의 liveFeed를 표시하는 데 사용됩니다).
Windows Form Host가없고 StackPanel
을 사용하면 작동합니다. 하지만 Panel
을 사용해야합니다.
XAML :
<Grid>
<Button Width="100" Height="100">
<Button.ToolTip>
<Controls:MyToolTip Height="500" Width="550">
<WindowsFormsHost x:Name="wrapper" Margin="0,0,0,0" Background="{x:Null}">
<wf:Panel x:Name="previewScreen" BackColor="Purple" Size="200,200" >
</wf:Panel>
</WindowsFormsHost>
</Controls:MyToolTip>
</Button.ToolTip>
</Button>
</Grid>
C 번호 : 시간과 도움을
public class MyToolTip : ToolTip
{
protected override void OnTemplateChanged(ControlTemplate oldTemplate, ControlTemplate newTemplate)
{
if (newTemplate != null)
{
this.Visibility = Visibility.Collapsed;
this.IsOpen = true;
Popup popup = GetPopupFromVisualChild(this);
if (popup != null) popup.AllowsTransparency = false;
this.IsOpen = false;
this.Visibility = Visibility.Visible;
}
}
private static Popup GetPopupFromVisualChild(Visual child)
{
Visual parent = child;
FrameworkElement visualRoot = null;
while (parent != null)
{
visualRoot = parent as FrameworkElement;
parent = VisualTreeHelper.GetParent(parent) as Visual;
}
Popup popup = null;
if (visualRoot != null)
{
popup = visualRoot.Parent as Popup;
}
return popup;
}
}
감사합니다.
안녕 Dzyann :
이보십시오. – Jonathan
@Jonathan이 도와 줘서 기쁩니다! – Dzyann