如何重置Xaml SwapChainBackgroundPanel的焦点

时间:2013-01-18 19:30:18

标签: xaml focus windows-runtime

我有一个实际上是SwapChainBackgroundPanel的页面,我用它来渲染到SharpDx(本质上是一个C#DirectX包装器)。对于我的输入,我处理面板的Pointer *和Key *事件。问题是面板上还有一个按钮(后退按钮),因为某些原因按钮正在获得默认焦点。所以当我按空格键时,它会调用按钮的点击事件。

为了防止这种情况发生,用户必须单击背景(面板)才能将焦点重新放在其上。问题是我无法找到一种方法以编程方式将焦点移回面板并关闭按钮。只有按钮具有设置焦点的任何功能,这对我没有帮助。

2 个答案:

答案 0 :(得分:1)

您可以将焦点移动到另一个隐形按钮:

<强> XAML

<Grid>
    <Button
        x:Name="b"
        Content="click"
        Click="B_OnClick" />
    <Button
        x:Name="b2"
        Opacity="0.005" />
</Grid>

<强> C#

    private async void B_OnClick(object sender, RoutedEventArgs e)
    {
        b.Focus(FocusState.Programmatic);
        await Task.Delay(100);
        b2.Focus(FocusState.Programmatic);
    }

我的其他答案在这里似乎不起作用,但我会保留它,因为它可能在将来有用,我相信它应该适用于Windows Phone。

答案 1 :(得分:0)

您可以尝试拨打

button.IsEnabled = false;
button.IsEnabled = true;

从按钮中失去焦点。