Command自定义二

MyCommand.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace DefineCommand
{
    public class MyCommand : ICommand
    {
        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)
        {
            throw new NotImplementedException();
        }

        public void Execute(object parameter)
        {
            TextBox txtCmd = parameter as TextBox;
            if (txtCmd != null)
            {
                MessageBox.Show(txtCmd.Text);
            }
        }
    }
}

 

 

MyCommandSource.cs

using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;

namespace DefineCommand
{
    class MyCommandSource : TextBlock, ICommandSource
    {
        public ICommand Command { get; set; }
        public object CommandParameter { get; set; }
        public IInputElement CommandTarget { get; set; }

        //重写单击处理函数,注意由于事件的优先级不同,如果命令源是Button的话,下面的函数不起作用
        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonUp(e);
            if (this.CommandTarget != null)
            {
                this.Command.Execute(this.CommandTarget);
            }
        }
    }
}

 

 

MainWindow.xaml

<Window x:Class="DefineCommand.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:DefineCommand"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Border CornerRadius="5" BorderBrush="LightBlue" BorderThickness="2">
         <Grid>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <TextBox Text="自定义命令测试,请输入内容:" TextAlignment="Center" VerticalAlignment="Center" FontSize="18"/>
            <TextBox x:Name="myTxt" Height="40" Margin="18" Grid.Column="1"/>
            <local:MyCommandSource x:Name="mySource" Grid.Row="1" Grid.ColumnSpan="2"
                                   Text="单击此色块自定义命令测试" FontSize="23" TextAlignment="Center"
                                   VerticalAlignment="Center" Height="110" Width="410" Background="LightBlue"/>
        </Grid>
    </Border>
</Window>

 

 

MainWindow.xaml.cs

using System.Windows;

namespace DefineCommand
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            MyCommand myCmd = new MyCommand();
            this.mySource.Command = myCmd;
            this.mySource.CommandTarget = this.myTxt;
        }
    }
}
时间: 2024-10-10 01:15:08

Command自定义二的相关文章

iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二)

iOS 开发之 ZBarSDK 二维码扫描自定义二维码扫描页面(二) 上一篇解决了ZBarSDK不支持64bit的问题,下面我们就可以使用ZBarSDK了. 导入ZBarSDk.h文件 附上代码: // //  MeViewController.m //  Auditory Blog // //  Created by 寒竹子 on 15/4/28. //  Copyright (c) 2015年 寒竹子. All rights reserved. // #define ScanWidth  2

Hadoop学习之自定义二次排序

一.概述    MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往 往有要对reduce输出结果进行二次排序的需求.对于二次排序的实现,本文将通过一个实际的MapReduce二次排序例子讲述 二次排序的实现和其MapReduce的整个处理流程,并且通过结果和map.reduce端的日志来验证所描述的处理流程的正确性. 二.需求描述 1.输入数据: sort1    1 sort2    3 sort2 

php自定义二维数组数组排序

1.先直接上函数 function array_sort($arr,$keys,$type='asc'){         $keysvalue = $new_array = array();        foreach ($arr as $k=>$v){            $keysvalue[$k] = $v[$keys];        }        if($type == 'asc'){            asort($keysvalue);        }else{  

ZBar之自定义二维码扫描

// // YvanQRCodeViewController.m // zBar // // Created by City--Online on 15/6/8. // Copyright (c) 2015年 CYW. All rights reserved. // #import "YvanQRCodeViewController.h" #import "ZBarSDK.h" #define SCANVIEW_EdgeTop 40.0 #define SCANVI

二维码框架ZBarSDK的使用和自定义二维码扫描界面方法

如果你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 如果你已经配置好ZBarSDK ,那么下面这个类可以直接用 下面是效果图 // //  头文件 //  TestProject // #import <UIKit/UIKit.h> #import "ZBarSDK.h" @interface yxpQrCode :UIViewController @end // //  实

表单验证自定义二选一

联系方式二选一 let validateRemindPhone = (rule, value, callback) => { //验证业务联系手机号码 const {remindEmail} = this.storeForm.contactInfo; if (!isPhone(value) && value !== "") { callback(new Error("输入的号码格式不正确")); } if (value === "&q

DEDECMS系统分页标签自定义二次开发实例

//php文件 <?php/** * 热点专题 */require_once(dirname(__FILE__)."/../include/common.inc.php");include_once(DEDEINC.'/datalistcp.class.php'); //热点专题 $dlist = new DataListCP(); //实例化 $dlist->pageSize = 5;   //每页显示条数 $sql = "SELECT * FROM `#@__

Python MyQR生成自定义个性二维码

MyQR是一个能够生成自定义二维码的python第三方库,根据需要能够生成普通二维码.带背景图片的艺术二维码.动态二维码. 1.MyQR安装 安装非常简单,直接用pip install MyQR,需要注意的是MyQR依赖于python3,在python2的环境下可能无法正常使用. 2.MyQR使用 直接上代码: # coding: utf-8 # Team : Quality Management Center # Author:Carson # Date :2019/6/29 8:30 # T

iOS开发-定制多样式二维码

iOS开发-定制多样式二维码 二维码/条形码是按照某种特定的几何图形按一定规律在平台(一维/二维方向上)分布的黑白相间的图形纪录符号信息.使用若干个与二进制对应的几何形体来表示文字数值信息. 最常见的二维码功能包括信息获取.网站跳转.电商交易.手机支付等等,其拥有密度小.信息容量大.容错能力强.成本低.制作难度低等优点.在移动开发中,二维码的地位也越来越重要,掌握二维码的基本操作是重要的本领之一. 在iOS7之后,苹果自身集成了二维码的生成和读取功能.生成二维码包括以下步骤 1.导入CoreIm