wpf RoutedUICommand 绑定

如果 自己设置按钮的快捷键就用后台绑定

读取自己设置的快捷键见方法2

 

方法1 

<Window x:Class="CustomerShortcutsDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>

        <RoutedUICommand x:Key="btnClick1" Text="Button Click"/>

    </Window.Resources>

    <Window.InputBindings>

        <KeyBinding Key="I" Modifiers="Ctrl + Alt"  Command="{StaticResource btnClick1}"/>

    </Window.InputBindings>

    <Window.CommandBindings>

        <CommandBinding Command="{StaticResource btnClick1}"

                        CanExecute="CommandBinding_CanExecute1"

                        Executed="CommandBinding_Executed1"/>

    </Window.CommandBindings>

    <Grid>

        <Button Content="Button 1" Height="23" HorizontalAlignment="Left" Margin="102,38,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" >

        </Button>

    </Grid>
</Window>

 后台

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace CustomerShortcutsDemo
{
    /// <summary>
    /// Window1.xaml 的交互逻辑
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {

            //MessageBox.Show("God");
            CustomerShortTwo win_CustomerShortTwo=new CustomerShortTwo();
            win_CustomerShortTwo.Show();

        }

        private void CommandBinding_CanExecute1(object sender, CanExecuteRoutedEventArgs e)
        {

            e.CanExecute = true;

        }

        private void CommandBinding_Executed1(object sender, ExecutedRoutedEventArgs e)
        {

            button1_Click(this, null);

        }
    }
}

  

 

第二种后台绑定

<Window x:Class="CustomerShortcutsDemo.CustomerShortTwo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:CustomerShortcutsDemo"
    Title="CustomerShortTwo" Height="300" Width="300">
    <Window.CommandBindings>
        <CommandBinding Command="local:CommandBindingDEmo.myCommand"
                       CanExecute="cb_CanExecute"  Executed="myRoudedEvent" />
    </Window.CommandBindings>

    <Grid>
        <Menu Margin="40,107,96,122">
            <MenuItem Header="文件">
                <MenuItem Name="MyIte"/>
                <MenuItem Name="MyIteT"/>
            </MenuItem>
        </Menu>
        <Button Name="My_Button" Click="MyClick" Height="71" VerticalAlignment="Top" HorizontalAlignment="Left" Width="113"></Button>
    </Grid>
</Window>

  

  后台

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace CustomerShortcutsDemo
{
    /// <summary>
    /// CustomerShortTwo.xaml 的交互逻辑
    /// </summary>
    public partial class CustomerShortTwo : Window
    {
        public CustomerShortTwo()
        {
            InitializeComponent();

            MyIte.Command = CommandBindingDEmo.myCommand;
            //this.CommandBindings.Add(cb);

            this.InputBindings.Add(new KeyBinding(CommandBindingDEmo.myCommand, new KeyGesture(Key.I, ModifierKeys.Alt | ModifierKeys.Control)));
        }

        void cb_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = true;
        }

        public void myRoudedEvent(object sender, ExecutedRoutedEventArgs e)
        {
            MyClick(null, null);
        }
        public void MyClick(object sender, RoutedEventArgs e)
        {

            MessageBox.Show("Click!");
        }
    }

    public class CommandBindingDEmo
    {
        public static RoutedUICommand myCommand = new RoutedUICommand("Open", "ClickOpen", typeof(CommandBinding));
        public static RoutedUICommand myCommandTwo = new RoutedUICommand("Close", "clickClose", typeof(CommandBinding));
    }
}

  

时间: 2024-09-24 11:27:52

wpf RoutedUICommand 绑定的相关文章

wpf命令绑定附加事件传递的过程

问题描述 wpf命令绑定附加事件传递的过程 命令源在命令绑定的范围内向命令目标发送命令,但是当命令源不在命令绑定范围内的时候,命令绑定的附加事件是如何传送的呢?请大侠们帮我看一下下面代码附加事件的传送过程是什么样的?是怎么从命令源传到命令目标的? 还有在命令目标不由程序员指定的时候,不应该是当前焦点所在为命令目标吗,为什么添加监视中的命令目标为空呢? xaml代码如下: .cs代码如下: public RoutedCommand clearCmd = new RoutedCommand("Cle

学习WPF——元素绑定

概念 从源对象提取一些信息,并用这些信息设置目标对象的属性 示例 在给TextBlock控件的FontSize属性赋值时,我们使用了绑定表达式 数据绑定表达式使用XAML的标记扩展(因此具有花括号)(参见:) 这里创建了一个System.Windows.Data.Binding对象,所以绑定表达式以单词binding开头 在本例中只设置了Binding对象的两个属性ElementName和Path属性 ElementName 指定源元素 Path 指定源元素中的属性 Mode OneWay: 当

wpf DataGridComboBoxColumn绑定

问题描述 我想在DataGridComboBoxColumn中绑定一列数据比如"小明""小黑","小米"我这样写DataGridComboBoxColumndataCombox=newDataGridComboBoxColumn();dataCombox.Header="名字";Bindingb=newBinding();b.Path=newPropertyPath("ComboxClass");dataC

WPF xaml 绑定的men,如何获取menuitem点击的菜单项名称

问题描述 <Windowx:Class="Weight_Batch.UI.MainWindow"xmlns:src="clr-namespace:Weight_Batch.UI"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Titl

浅谈WPF中的Command事件绑定

在项目中使用Command绑定能够使我们的代码更加的符合MVVM模式.不了解的同学可能不清楚,只有继承自ButtonBase类的元素才可以直接绑定Command(Button.CheckBox.RadioButton等) <Button Content="Normal" Command="{Binding NormalEventCommand}" ></Button> 如果我们要处理Label或者其他的一些控件,那么只能在走事件: <L

WPF学习之绑定—Validation Rule和Binding Group

在上一篇文章中我们讨论了有关WPF绑定的知识点,现在我们可以很容易的将业务数据作为源绑定到WPF控件并可以通过创建不同的Data Template后来以特定的样式展现.而作为这个最常用的功能我们可以通过Two Way的绑定模式与界面交互,而在这个时候我们就需要类似于ASP.NET中Validator一样的东西来限制或者说校验数据有效性.ValidationRule就是为这样的应用而生的.本文将详细讨论如何应用验证规则和自定义错误模板. 我们首先来看看WPF中有关数据验证规则相关的几个常用类: ·

WPF中,如何将绑定源设置到单件实例

大概两个月前,曾有位朋友问我:如果我想在WPF中将绑定源设置到某个采用单件模式设计的实例上,应该怎么做呢?这是一个不错的问题.可能这段时间比较忙,呵呵,忘记回答这个问题了,昨天拿到伍迷大哥的<大话设计模式>(PS:强烈推荐该书哈,真的不错)时突然想起这个问题了.今天简要说一下: 首先我们简单地写一个使用了单件模式的MyButton类: public class MyButton : Button     {         private MyButton()         {       

艾伟:WPF中,如何将绑定源设置到单件实例

大概两个月前,曾有位朋友问我:如果我想在WPF中将绑定源设置到某个采用单件模式设计的实例上,应该怎么做呢?这是一个不错的问题.可能这段时间比较忙,呵呵,忘记回答这个问题了,昨天拿到伍迷大哥的<大话设计模式>(PS:强烈推荐该书哈,真的不错)时突然想起这个问题了.今天简要说一下: 首先我们简单地写一个使用了单件模式的MyButton类:     public class MyButton : Button    {        private MyButton()        {      

创建可编辑的xml文档(之一)绑定xml文档到treeview 控件

treeview|xml|创建|控件 目录:    介绍    绑定xml文档到treeview 控件    过滤xml 数据    执行拖放操作    执行删除,改名,插入操作    使用中的treeview 控件   通过xml 和xpath 你可以毫不费力的为你的treeview控件增加拖放甚至更多的功能-by Alex Hildyard   最近,我一直在开发一个用来维护在线目录的用户界面工具,因为这个目录包含太多的产品,所以用一些方法对他们分类是很有意义的.目录管理员将需要有删除和定义