【问题标题】:WPF correct way to set a bool while a key is pressedWPF在按下键时设置布尔值的正确方法
【发布时间】:2011-03-27 23:15:26
【问题描述】:

在 WPF 中,我需要在按下某个键时设置一个布尔变量(并另外执行一些其他操作)。 IE。按下设置键,释放键复位。我可以通过事件处理程序来做一些事情:

this.KeyDown += new KeyEventHandler(MyModuleView_KeyDown);
this.KeyUp += new KeyEventHandler(MyModuleView_KeyUp);

bool MyFlag = false;

void MyModuleView_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.Key == System.Windows.Input.Key.Space)
        {
            MyFlag = false;
            ...
        }

    }

    void MyModuleView_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == System.Windows.Input.Key.Space)
        {
            MyFlag = true;
            ...
        }
    }

但我怀疑在 WPF 中它可以以更正确的方式完成。
我正在尝试使用命令方法,但在我这样做的方式中,我只能设置一个变量按下。:

private static RoutedUICommand mymode;

InputGestureCollection inputs = new InputGestureCollection();
        inputs.Add(new KeyGesture(Key.Space, "Space"));
        mymode = new RoutedUICommand("MyMode", "MyMode", typeof(InterfaceCommands), inputs);
public static RoutedUICommand MyMode
{
    get { return mymode; }
}
...
private void MyModeCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
    MyFlag = true;
    ...
}

如何正确跟踪 WPF 中某个键的状态以打开某物(例如光标的选择模式)按下该键?

【问题讨论】:

    标签: c# wpf silverlight keyboard


    【解决方案1】:

    在这里,命令对您没有帮助,您处理事件的方法是正确的方法。如果您不喜欢代码隐藏 - 您可以创建一个自定义附加属性,该属性将负责事件连接。

    【讨论】:

      【解决方案2】:

      查看AttachedCommandBehavior library 和提供的示例

      【讨论】:

        猜你喜欢
        • 2022-10-13
        • 2012-12-13
        • 1970-01-01
        • 2017-05-24
        • 2018-07-09
        • 1970-01-01
        • 2013-02-08
        • 2015-08-28
        • 1970-01-01
        相关资源
        最近更新 更多