Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF键按下时设置布尔值的正确方法_C#_Wpf_Silverlight_Keyboard - Fatal编程技术网

C# WPF键按下时设置布尔值的正确方法

C# WPF键按下时设置布尔值的正确方法,c#,wpf,silverlight,keyboard,C#,Wpf,Silverlight,Keyboard,I WPF我需要在按键时设置一个布尔变量(并另外执行一些其他操作)。也就是说,按下该键进行设置,松开该键进行复位。我可以通过事件处理程序完成以下操作: this.KeyDown += new KeyEventHandler(MyModuleView_KeyDown); this.KeyUp += new KeyEventHandler(MyModuleView_KeyUp); bool MyFlag = false; void MyModuleView_KeyUp(object sender

I WPF我需要在按键时设置一个布尔变量(并另外执行一些其他操作)。也就是说,按下该键进行设置,松开该键进行复位。我可以通过事件处理程序完成以下操作:

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中某个键的状态,以便在按下该键时打开某个东西(例如光标的选择模式)

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

查看并提供示例