首页 文章

如何重置Xaml SwapChainBackgroundPanel的焦点

提问于
浏览
0

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

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

2 回答

  • 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 .

  • 0

    你可以尝试打电话

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

    从按钮失去焦点 .

相关问题