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 依賴屬性

主站蜘蛛池模板: 日本欧美成人免费观看 | 成年男女男精品免费视频网站 | 国产福利片在线 易阳 | 亚洲国产精品久久久久久网站 | 国产线视频精品免费观看视频 | 国产精品欧美一区二区三区 | 成人欧美午夜视频毛片 | 成人午夜精品久久久久久久小说 | 在线视频一区二区三区四区 | 网站在线免费观看 | 四虎黄色 | 国产在播放一区 | 欧美aaaa黄色一级毛片 | 一区在线观看视频 | 中国精品 | 国产亚洲一区二区精品张柏芝 | 免费久久久久 | 精品视频一区二区三区在线观看 | 欧美日韩在线一区 | 欧美成人免费tv在线播放 | jizz免费软件 | 欧美久久亚洲精品 | 久久久精品中文字幕 | 欧美成人性生活视频 | 五月婷婷色视频 | 成成人看片在线 | 亚洲成人影院在线 | 求黄色网| 国产日韩精品一区二区在线观看 | 欧美日韩中文在线视频 | 国模精品视频一区二区三区 | 国产精品免费一级在线观看 | 国产精品福利无圣光一区二区 | 金发美女与黑人巨大交 | 久久久99精品 | 国产美女亚洲精品久久久综合91 | 黑人巨大进入美女深处的视频 | 在线观看日本三级 | 亚洲精品国产专区一区 | 青青青国产依人在在线观看高 | 国产综合精品久久亚洲 |