团圆盈佳季,谱写华丽章,庆此欢乐颂,中秋庆佳节。中秋之际给大家解锁一些Wpf的快捷方式-新闻详情

团圆盈佳季,谱写华丽章,庆此欢乐颂,中秋庆佳节。中秋之际给大家解锁一些Wpf的快捷方式


发布时间:2018-09-30责任编辑:满帅 浏览:1207


步骤1、在你要设置的控件或页面里先新建对应的命令例如:也可以使用RouteCommand 

 <UserControl.Resources>

        <RoutedUICommand x:Key="Cut" Text="剪切" />

        <RoutedUICommand x:Key="Copy" Text="复制" />

        <RoutedUICommand x:Key="Paste" Text="粘贴" />

        <RoutedUICommand x:Key="Select" Text="全选" />

    </UserControl.Resources>

    也可使用外部类:

     <Class:JianQieCommand x:Key="CutComd" />

     <Class:FuZhiportCommand x:Key="CopyComd" />

    步骤2、我们设置了这些命令就要把这些命令绑在对应的按键上

  <UserControl.InputBindings>

        <KeyBinding Gesture="Ctrl+X" Command="{StaticResource Cut}" />

        <KeyBinding Gesture="Ctrl+C" Command="{StaticResource Copy}" />

        <KeyBinding Gesture="Ctrl+V" Command="{StaticResource Paste}" />

    </UserControl.InputBindings>

    步骤3、这些命令该怎么运行呢?如果是外部类需写一个命令类实现ICommand接口:

      

    public class JianQieCommand : ICommand

    {

        public event EventHandler CanExecuteChanged;

//执行命令的条件

        public bool CanExecute(object parameter)

        {

            return true;


        }

        //执行鉴定命令的逻辑

        public void Execute(object parameter)

        {

}

}

其次、绑定本地方法:  例:

<Window.CommandBindings>

        <CommandBinding Command="{StaticResource CloseWin}" Executed="PageClose_Click"/>

        <CommandBinding Command="{StaticResource SelectAllFile}" Executed="SelectAllFile_Click"/>

    </Window.CommandBindings>

方式2:可在全局窗口的xaml中绑定按键按下的事件

例如:


写控件或者窗体的KeyDown事件 PreviewKeyDown="Window_KeyDown"

private void Window_KeyDown(object sender, KeyEventArgs e)

        {

            try

            {


                if (e.Key == Key.Enter)

                {

                    if (Keyboard.FocusedElement != null && Keyboard.FocusedElement == SearchTxt) Search_Click(SearchBtn, e);

                    //文件或者文件夹重命名

                    if (Keyboard.FocusedElement != null && Keyboard.FocusedElement.GetType().Name == "TextBox")

                    {

                        TextBox box = Keyboard.FocusedElement as TextBox;

                        FilesModel model = box.DataContext as FilesModel;

                        if (model != null) ReName_LostFocus(box, e);

                    }


                    Keyboard.ClearFocus();

                }

                //Ctrl+C 全选

                if ((e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl)) && e.KeyboardDevice.IsKeyDown(Key.C))

                {

                    if (Keyboard.FocusedElement != null && Keyboard.FocusedElement.GetType().Name == "TextBox") return;

                    CommandBinding_Copy(null, null);

                }


                //Ctrl+X 全选

                if ((e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl)) && e.KeyboardDevice.IsKeyDown(Key.X))

                {

                    if (Keyboard.FocusedElement != null && Keyboard.FocusedElement.GetType().Name == "TextBox") return;

                    CommandBinding_Cut(null, null);

                }

                //Ctrl+V 全选

                if ((e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl)) && e.KeyboardDevice.IsKeyDown(Key.V))

                {

                    if (Keyboard.FocusedElement != null && Keyboard.FocusedElement.GetType().Name == "TextBox") return;

                    CommandBinding_Paste(null, null);

                }


                //Ctrl+A 全选

                if ((e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl)) && e.KeyboardDevice.IsKeyDown(Key.A))

                {

                    SelectAllCheck.IsChecked = true;

                    SelectAll_Click(SelectAllCheck, e);

                }

                //Shift+D 删除

                if ((e.KeyboardDevice.IsKeyDown(Key.LeftShift) || e.KeyboardDevice.IsKeyDown(Key.RightShift)) && e.KeyboardDevice.IsKeyDown(Key.Delete))

                {

                    DeleteBtn_Click(null, e);

                }

            }

            catch (Exception)

            {

            }


        }


项目开发组   供稿