91手机视频在线-91手机视频在线观看-91手机在线-91手机在线播放-91手机在线观看

完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業名稱
* 信用代碼
* 所在行業
* 企業規模
* 所在職位
* 姓名
* 所在行業
* 學歷
* 工作性質
請先選擇行業
您還可以選擇以下福利:
行業福利,領完即止!

下載app免費領取會員

NULL

ad.jpg

二次開發教程:WPF 給控件添加可以綁定的命令

發布于:2019-07-25 15:07:29

網友投稿

更多

在WPF里的Button有一個可以綁定的Command的屬性,只要綁定好這個屬性以后,只要你ClickButton就


會運行這個命令,但這時我們可以考慮一下這個問題,為什么是Click來觸發呢?為什么不是右鍵單擊來觸發呢,


下面研究一下,怎么能寫一個右鍵單機能觸發的命令:


首先現有的Button肯定是不行了,所以自己寫一個TButton ,它繼承自Button


    public class TButton:Button

    {

        public static readonly DependencyProperty TCommandParameterProperty = DependencyProperty.Register("TCommandParameter", typeof(object), typeof(TButton));

        public static readonly DependencyProperty TCommandProperty = DependencyProperty.Register("TCommand", typeof(ICommand), typeof(TButton));

        public static readonly DependencyProperty TCommandTargetProperty = DependencyProperty.Register("TCommandTarget", typeof(object), typeof(TButton));

        public ICommand TCommand

        {

            get

            {

                return (ICommand)GetValue(TCommandProperty);

            }

            set

            {

                SetValue(TCommandProperty, value);

            }

        }

        public object TCommandParameter

        {

            get

            {

                return GetValue(TCommandParameterProperty);

            }

            set

            {

                SetValue(TCommandParameterProperty, value);

            }

        }

        public IInputElement TCommandTarget

        {

            get

            {

                return (IInputElement)GetValue(TCommandTargetProperty);

            }

            set

            {

                SetValue(TCommandTargetProperty, value);

            }

        }


        protected override void OnMouseRightButtonUp(MouseButtonEventArgs e)

        {

            base.OnMouseRightButtonUp(e);

            RoutedCommand rcmd = TCommand as RoutedCommand;

            if(rcmd!=null)

            {

                if(rcmd.CanExecute(TCommandParameter,TCommandTarget))

                {

                    rcmd.Execute(TCommandParameter, TCommandTarget);

                }                

            }

            else

            {

                if(TCommand!=null)

                {

                    if(TCommand.CanExecute(TCommandParameter))

                    {

                        TCommand.Execute(TCommandParameter);

                    }

                }

            }

        }

    }


再寫一個命令


    public class TCommand : ICommand

    {

        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)

        {

            return true;

        }

        public void Execute(object parameter)

        {

            Window win = parameter as Window;

            if (win != null)

                win.Close();

        }

    }


再界面里綁定:


        <local:TButton x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="411,277,0,0" VerticalAlignment="Top" Width="75" TCommand="{Binding TCommand}" TCommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"/>

本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

未標題-1.jpg

上一篇:二次開發教程:WPF DataContent內存釋放問題

下一篇:二次開發教程:WPF 依賴屬性

主站蜘蛛池模板: 12306播播影院午夜 | 尤蜜视频在线观看播放 | 精品一区二区三区色花堂 | 国产视频一区二区在线观看 | 在线黄色网 | 免费成年人在线观看视频 | 欧美伦理片在线观看 | 国产精品福利在线播放 | 国产日产亚洲欧美综合另类 | 色视频免费观看高清完整 | 精品国产一区二区麻豆 | 久久国产视屏 | 狠狠色丁香久久婷婷综合_中 | 久久99国产亚洲精品 | 精品国产一级在线观看 | 色噜噜狠狠一区二区三区 | 欧美美女黄色片 | 精品免费在线观看 | 国产不卡一区二区三区免费视 | 91精品全国免费观看老司机 | 国产 欧美 日本 | 一级真人毛片 | 亚洲欧美制服丝袜一区二区三区 | 久久久久国产亚洲日本 | 手机看片高清日韩精品 | 国产成人一区 | 色悠久久久久综合欧美99 | 蜜柚传媒影视 | 日韩一级片在线免费观看 | 国产日产久久高清欧美一区 | 欧美一级毛片aaaaa | 免费直接看黄 | 国产精品福利自产拍网站 | 中文乱码视亚洲 | 国产精品伦子一区二区三区 | 国产在热线精品视频国产一二 | 极品国产高颜值露脸在线 | 高清在线观看自拍视频 | 欧美一级α片毛片免费观看 | 日韩精品亚洲专区在线观看 | 午夜国产精品影院在线观看 |