0

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

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

4

2 回答 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。

于 2013-01-18T21:23:06.180 回答
0

你可以试试打电话

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

从按钮失去焦点。

于 2013-01-18T19:58:33.783 回答