页面上的 WPF KeyDown 事件

2024-02-18

我有一个NavigationWindow with Page:

页面 XAML:

<Page x:Class="Existence.IntroPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" ShowsNavigationUI="False"
    d:DesignHeight="300" d:DesignWidth="300"
    Title="IntroPage" Loaded="Page_Loaded">
    <Grid Name="gridzik">
        <Grid.RowDefinitions>
            <RowDefinition Height="3*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Rectangle Name="aa" Fill="Black" Grid.RowSpan="3">
            <Rectangle.Triggers>
                <EventTrigger RoutedEvent="Window.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="img" Storyboard.TargetProperty="Opacity" From="0" To="1" BeginTime="0:0:1" Duration="0:0:2" AutoReverse="False"/>
                            <DoubleAnimation Storyboard.TargetName="img2" Storyboard.TargetProperty="Opacity" From="0" To="1" BeginTime="0:0:3" Duration="0:0:2" AutoReverse="False" Completed="DoubleAnimation_Completed"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Rectangle.Triggers>
        </Rectangle>
        <Image Name="img" Source="X:\Densetsu Existence\wstepne logo existence1.jpg" Grid.RowSpan="2" Opacity="0"></Image>
        <Image Name="img2" Source="X:\Densetsu Existence\wstepne logo existence2.jpg" Grid.RowSpan="2" Opacity="0"></Image>
        <Grid Grid.Row="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Viewbox x:Name="vbBig" HorizontalAlignment="Center" VerticalAlignment="Center">
                <TextBlock Name="ee" Visibility="Hidden" Text="Press Enter" Foreground="White" FontWeight="DemiBold">
                </TextBlock>
            </Viewbox>
        </Grid>
    </Grid>
</Page>

页面代码落后

public partial class IntroPage : Page
    {
        NavigationWindow win;
        public double max, min;
        public DoubleAnimation da;
        public IntroPage()
        {
            InitializeComponent();
        }
        private void DoubleAnimation_Completed(object sender, EventArgs e)
        {
            ee.Visibility = Visibility.Visible;
            this.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
            this.MouseLeftButtonDown += new MouseButtonEventHandler(MainWindow_MouseLeftButtonDown);
            max = win.Height / 5;
            min = max / 2;
            da = new DoubleAnimation();
            da.From = min;
            da.To = max;
            da.Duration = new Duration(TimeSpan.FromSeconds(1));
            da.AutoReverse = true;
            da.RepeatBehavior = RepeatBehavior.Forever;
            vbBig.BeginAnimation(Button.HeightProperty, da);
        }
        public void MainWindow_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
                win.Navigate(new MainMenuPage());
        }
        public void MainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            img2.Visibility = Visibility.Hidden;
            win.Navigate(new MainMenuPage());
        }
        public void Window_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            max = ((NavigationWindow)sender).Height / 5;
            min = max / 2;
            if (da != null)
            {
                vbBig.BeginAnimation(Button.HeightProperty, null);
                da.From = min;
                da.To = max;
                vbBig.BeginAnimation(Button.HeightProperty, da);
            }
        }

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            win = (NavigationWindow)Window.GetWindow(this);
            win.SizeChanged += new SizeChangedEventHandler(Window_SizeChanged);
        }
    }

问题是KeyDown但是事件不起作用MouseLeftButtonDown活动效果很好。我该如何解决?我正常使用的时候有效Window但我需要使用Pages.


您可能需要在页面上使用 PreviewKeyDown

+=new PreviewKeyDownEventHandler(MainWindow_PreviewKeyDown);

代替

+= new KeyEventHandler(MainWindow_KeyDown);

这只是一个想法,我不确定。 (而且我无法测试)

[EDIT]

看来您需要使用窗口附加事件

win.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

页面上的 WPF KeyDown 事件 的相关文章

  • 如何修复错误 MC1000 未知构建错误,“找不到类型“System.Web.UI.TagPrefixAttribute”

    我有一个 WPF 项目 对于我正在使用的报告服务 Microsoft ReportingServices ReportViewerControl WebForms Microsoft ReportingServices ReportView
  • 如何获取 WPF 用户控件可见部分的大小?

    我有一个由标签和文本框组成的用户控件 它位于滚动查看器内 我正在其顶部绘制一个装饰器 并且需要将装饰器的大小调整为控件的可见大小 如何获得控件的可见大小 在下图中 绿色矩形是装饰器 正如您所看到的 它被绘制在右侧的滚动条上 是否可以获得渲染
  • 强制加载 WPF 视觉对象的适当方法

    我一直在努力使用打印System Printing http msdn microsoft com en us library system printing aspx命名空间 我终于发现 在使用部分 API 时得到空白结果的原因是Visu
  • WPF - 从 UserControl 发出命令时 CanExecute 不会触发

    我有一个按钮条用户控件 我想在我的大多数表单上使用它 我添加了如下命令 public ICommand Create get return buttonCreate Command set buttonCreate Command valu
  • 运行时动态转换

    有没有一种方法可以在运行时动态转换 如以下伪代码 foreach DataRow row in table Rows foreach DataColumn col in table Columns if row col DBNull Val
  • WPF 应用程序在每个系统规模上具有相同的大小(与规模无关)

    有没有办法让 WPF 应用程序在每个系统规模上获得相同的大小 当我改变时更改文本 应用程序和其他项目的大小在windows系统设置中125 推荐 to 100 在全高清屏幕中 我的 WPF 应用程序变得太小 为了实现独立的系统缩放应用程序
  • 使用 MVVM 在 WPF 中打印 TreeView

    我有一个树视图来从文本文件返回文本搜索结果
  • 鼠标悬停时 WPF 按钮背景透明度

    我正在尝试更改某些按钮上的鼠标悬停效果 因为它们设置了不同的自定义背景颜色 因此当前将相同浅蓝色的鼠标悬停方案不太适合 我目前得到了这个
  • 执行命令不会在后面的资源字典代码中触发

    我已经为其创建了资源字典和代码隐藏文件 在 XAML 中 我定义了命令绑定并添加了执行处理程序
  • Trace.Assert 没有中断,也不显示消息框

    我有一个 WPF 应用程序 我在其中在画布上移动数据 当我像怪物一样尝试用鼠标移动数据时 问题就开始了 以下是操作的顺序 画布上的 MouseMove 被触发 在 MouseMove 中 我更改了一些数据 Trace Assert 失败 调
  • 如何使用代码隐藏创建 StackPanel -> 边框 -> 背景

    我正在尝试设置 a 的属性TreeViewItem gt StackPanel在 C 中就像这个问题 https stackoverflow com questions 8203316 adding content to a treevie
  • WPF:什么会导致 ComboBox 无法虚拟化?

    这是我的组合框 它似乎没有虚拟化 但我不明白为什么 您知道有什么会导致这种情况吗
  • 如何将 TargetNullValue 设置为日期?

    我使用 WPF 工具包的日历控件来允许用户选择日期 如果尚未选择日期 则 SelectedDate 绑定到的属性为 Null 这使得日历默认为公元 0 年 1 月 1 日 我想做类似的事情 SelectedDate Binding User
  • 带有添加新选项卡按钮 (+) 的 TabControl

    在 WPF 中选项卡控件的选项卡条中的所有选项卡项的末尾添加 按钮选项卡的正确方法是什么 它应该可以正确地处理多个选项卡标题行 它应该位于所有选项卡项目的末尾 Tab cycling should work correctly Alt Ta
  • Tabcontrol 中的 SelectedIndex 不变 - 调度程序问题

    为什么在我设置 SelectedIndex 0 后 我随后 而不是响应 得到使用 SelectedIndex 4 调用的事件处理程序 我追踪到对调度程序的调用 但我不明白为什么 计划如下 我有一个页面 其中包含带有各种选项卡的选项卡控件 当
  • Windows 8 和 LOB 应用程序

    为 Windows 8 构建业务线应用程序的推荐方法是什么 例如复杂的定制财务应用程序 它们显然不适合 Metro 风格 因此可能会成为常规桌面应用程序 那么建议使用WPF吗 有 vNext 吗 我作为开发人员构建的应用程序类型是桌面风格的
  • 可观察集合未因 UI 更改而更新

    我正在尝试将可观察集合绑定到用户控件 但它不会在用户更改时更新 但在通过代码更改用户控件时它会更新 以下是我尝试过的一个例子 它可能有点长 但它正在运行 因此您可以按原样复制并粘贴代码 请参阅帖子末尾我的问题 客户 cs using Sys
  • 在 MVVM 中哪里可以捕获异常?

    我的视图模型类有一个连接到服务的方法 不确定这是否是一个好的实践 或者视图模型是否应该是严格的属性和属性更改机制 当然 我想在连接或断开连接时处理任何可能的 WCF 异常 让我们使用未找到端点作为示例 考虑到这是一个我想引起用户注意的异常
  • 单击窗口后才检测到 keydown

    在我的 Web 应用程序中 我有一个用于打开菜单的键的事件侦听器 仅当我单击页面上的任意位置后 此功能才可以正常工作 我尝试将焦点添加到窗口加载 但这仍然不会让 keydown 函数运行 直到我单击页面上的某个位置之后 有谁知道这是否可能
  • WPF 路径:如何在 XAML 中绘制它?

    我想创建一个带有非矩形标题的自定义 GroupBox 如下图所示 正如你所看到的 标题的内容必须是可参数化的 因此可以在xaml中输入图像 标题和背景 提前致谢 谢谢您的回答 实际上我想在自定义组框中使用这个设计 所以在你的答案中 如果我不

随机推荐