内でWindowsフォームパネルをホストしようとしていますToolTip
。以下は、Xamlコードとの背後にあるクラスToolTip
です。
問題は、windowsFormsHostを使用している場合、パネルの色が変わらないことです。パネルToolTip
がそこにあることすら知らないように感じます。
私はそれを正しくやっていますか?
(色を変更できる場合は、それを使用してカメラのライブフィードを表示します)
ボタンをクリックすると、ToolTip
そこにありますが、基本的なままです。
Windowsフォームホストがなく、を使用する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;
}
}
お手数をおかけしますが、よろしくお願いいたします。