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

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

下載app免費領取會員

NULL

ad.jpg

二次開發教程:ICommand接口

發布于:2019-07-25 15:12:08

網友投稿

更多

    // 摘要:

    //     Defines a command.

    public interface ICommand

    {

        //

        // 摘要:

        //     Occurs when changes occur that affect whether or not the command should execute.

        event EventHandler CanExecuteChanged;


        //

        // 摘要:

        //     Defines the method that determines whether the command can execute in its current

        //     state.

        //

        // 參數:

        //   parameter:

        //     Data used by the command. If the command does not require data to be passed,

        //     this object can be set to null.

        //

        // 返回結果:

        //     true if this command can be executed; otherwise, false.

        bool CanExecute(object parameter);

        //

        // 摘要:

        //     Defines the method to be called when the command is invoked.

        //

        // 參數:

        //   parameter:

        //     Data used by the command. If the command does not require data to be passed,

        //     this object can be set to null.

        void Execute(object parameter);


上面這個是ICommand包含的類容,通過一個小例子來說明她的使用方法,


首先在Window里添加一個Button和一個Textbox,給Button綁定一個命令,給Text box綁定一個int數字,當int 數字小于0是Button不可用。


首先創建命令:


    public class OK_Command : ICommand

    {

        private ViewModel _vm = null;

        public OK_Command(ViewModel vm)

        {

            _vm = vm;

        }

        public event EventHandler CanExecuteChanged;

        public void RaiseCanExecuteChanged()

        {

            if(CanExecuteChanged!=null)

            {

                CanExecuteChanged(this, EventArgs.Empty);

            }

        }

        public bool CanExecute(object parameter)

        {

            if (_vm.Num < 0)

                return false;

            return true;

        }

        public void Execute(object parameter)

        {

            MessageBox.Show("OK");

        }

    }


創建View Model:


    public class ViewModel : INotifyPropertyChanged

    {

        private int _num = 0;

        public int Num

        {

            get

            {

                return _num;

            }

            set

            {

                _num = value;

                RaisePropertyChanged(nameof(Num));

                RaisePropertyChanged((nameof(OK_Command)));

            }

        }


        private OK_Command _okCommand = null;

        public OK_Command OK_Command

        {

            get

            {

                if(_okCommand ==null)

                {

                    _okCommand = new OK_Command(this);

                }

                _okCommand.RaiseCanExecuteChanged();

                return _okCommand;

            }

        }


        public event PropertyChangedEventHandler PropertyChanged;

        private void RaisePropertyChanged(string name)

        {

            if(PropertyChanged!=null)

            {

                PropertyChanged(this, new PropertyChangedEventArgs(name));

            }

        }

    }




在Window里添加Button和TextBox 并設置綁定路徑


<Window x:Class="ICommandDemo.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:ICommandDemo"

        mc:Ignorable="d"

        Title="MainWindow" Height="350" Width="525">

    <Grid>

        <Button x:Name="button" Command="{Binding Path=OK_Command}" Content="Button" HorizontalAlignment="Left" Margin="334,268,0,0" VerticalAlignment="Top" Width="75"/>

        <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="288,176,0,0" TextWrapping="Wrap" Text="{Binding Path= Num,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="120"/>

    </Grid>

</Window>




最后在Window啟動設置Data Context


    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            DataContext = new ViewModel();

        }

    }

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

未標題-1.jpg

上一篇:二次開發教程:C# 弱事件

下一篇:二次開發教程:WPF 模板選擇器

主站蜘蛛池模板: 一本久道久久综合 | 伊人色综合久久天天网蜜月 | 国产专区视频在线观看 | 中文字幕毛片 | 日本在线看片网站 | 日本欧美不卡一区二区三区在线 | 亚洲性色综合图区图片 | 国产一区二区三区丶四区 | 日本一级片在线观看 | 91麻豆免费观看 | 日本综合久久 | 中国大陆高清aⅴ毛片 | 午夜精品久久久久久久 | 一本一道波多野结衣一区二区 | 亚洲 欧美 日韩 在线 | 一级毛片在线免费播放 | 国产区成人综合色在线 | 亚洲成a人片毛片在线 | 日本黄色录像 | 国内精品福利爱丝视频_速发 | 国产麻豆精品视频 | 欧美18性欧美丶黑吊 | a级国产视频 | 三级毛片三级毛片 | 亚洲午夜国产精品无卡 | 善良的翁熄日本在线观看 | 国产精品巨乳 | 久草视频2 | 免费看的黄色 | 国产成人精品久久综合 | 一区二区三区在线免费观看视频 | 免费国产在线观看不卡 | 一级一片免费看 | 色黄网站在线观看 | 在线观看免费黄色 | 国内精品久久久久影院不卡 | 亚洲精品国产拍拍拍拍拍 | 嫩草精品 | 国产福利不卡视频在免费 | 美国免费一级片 | 日韩黄毛片 |