完善主體資料,免費贈送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 依賴屬性

    60acb4e0ef112.png
    主站蜘蛛池模板: 日韩国产一区二区| 国产无吗一区二区三区在线欢| 亚洲AV成人一区二区三区AV| 中文字幕在线一区二区三区| 亚洲毛片αv无线播放一区 | 波多野结衣精品一区二区三区 | 大帝AV在线一区二区三区| 国产日韩精品一区二区在线观看播放| 麻豆视频一区二区三区| 麻豆精品久久久一区二区| 成人精品一区二区不卡视频| 国产亚洲情侣一区二区无| 国产高清在线精品一区| 国产91精品一区| 国产一区二区在线视频| 无码视频免费一区二三区| 国产精品一区不卡| 亚洲国产一区在线观看| 国产美女一区二区三区| 国产伦精品一区二区三区女| 日本一区二区三区爆乳| 中文字幕乱码人妻一区二区三区| 91在线一区二区| 伊人色综合视频一区二区三区| 精品亚洲AV无码一区二区| 亚洲视频一区网站| 久久青青草原一区二区| 成人一区专区在线观看| 搜日本一区二区三区免费高清视频 | 日本中文字幕在线视频一区| ...91久久精品一区二区三区| 久久久久成人精品一区二区| 3d动漫精品啪啪一区二区中文| 国产福利电影一区二区三区,亚洲国模精品一区 | 丰满人妻一区二区三区免费视频 | 国产在线精品一区二区 | 久久99精品免费一区二区| 国产成人片视频一区二区| 无码国产伦一区二区三区视频| 高清一区二区三区视频| 夜夜精品无码一区二区三区|