XAML 如何防止Esc键轻消除弹出窗口?

w51jfk4q  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(140)

我有一个弹出窗口,当用户点击弹出窗口外的元素时,该弹出窗口需要灯光消除。默认情况下,按Esc键也会触发灯光消除,我希望阻止它。相反,我希望显式处理此KeyDown事件。
处理页面根目录中的Tapped事件以检查用户是否在弹出窗口外点击是一种解决方案,但由于我的应用程序中的 * 每 * 次点击都会经历此过程,我不希望采用这种方法。
一些伪代码:

<Page>
    <Grid>
        <Popup
            x:Name="FooTip"
            Opened="FooTip_Opened"
            Closed="FooTip_Closed"
            IsLightDismissEnabled="True"
            ShouldConstrainToRootBounds="True">
            <!-- Popup content here -->
        </Popup>
    </Grid>
</Page>

TLDR:按下Esc键时,FooTip不应熄灭灯光。

utugiqy6

utugiqy61#

按下Esc键时,FooTip不应熄灭灯光。
您可以像这样处理PagePreviewKeyDown事件:

private void OnPreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == Windows.System.VirtualKey.Escape
        && FooTip.IsOpen)
    {
        e.Handled = true;
    }
}

相关问题