【发布时间】:2020-04-11 00:10:32
【问题描述】:
我有一个画布(技术上是 SkiaSharp SKXamlCanvas),我需要将它托管在一个可以获得焦点的控件中(出于此处我不会介绍的原因)。我将画布作为子类添加到派生自ContentControl 的类(称为ControlHost),并将画布设置为Content。 ControlHost's GetFocus 在我打开应用程序时被调用,但是当我点击ControlHost(占据整个窗口)时,我在释放鼠标按钮后得到一个LostFocus。
我知道TextBox 之类的东西在用鼠标单击它们后会保持焦点。我可以使用另一个控件来保持焦点并简单地充当画布的容器吗?我试过UserControl、Frame、Page 等。或者我可以在ContentControl 上设置一些属性,让它保持焦点?
这可以通过制作一个空白的 UWP 应用并将以下控件作为子控件添加到MainPage 的网格中轻松重现。
public class ContentControlTest : ContentControl
{
public ContentControlTest()
{
GotFocus += OnGotFocus;
LostFocus += OnLostFocus;
}
private void OnLostFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine("OnLostFocus");
}
private void OnGotFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine("OnGotFocus");
}
}
【问题讨论】: