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 模板選擇器

主站蜘蛛池模板: 又亲又揉摸下面视频免费看 | 国产++欧洲韩国野花视频 | 久久国产精品偷 | 国产高清一区 | 成人天堂入口网站 | 日本欧洲95视频 | 久热香蕉视频 | 成人精品亚洲人成在线 | 女人被男人狂躁下面在线观看 | 日韩美香港a一级毛片 | 国内欧美一区二区三区 | 久久久精品视频在线观看 | 女人18毛片a级毛片免费视频 | 欧美成人高清性色生活 | 亚洲欧洲另类 | 日韩欧美一区二区三区四区 | 日韩亚洲成a人片在线观看 日韩亚洲欧美一区二区三区 | 九九精品视频在线观看九九 | 久久九色综合九色99伊人 | 亚洲国产精品成人午夜在线观看 | 午夜一级毛片 | 国产一区二区精品久久91 | 日韩一区二区在线观看 | 三级毛片在线播放 | 日韩中文字幕在线 | 国产一区二区不卡 | 国产精品青草久久 | 亚洲丶国产丶欧美一区二区三区 | 一级毛片特级毛片国产 | 欧美天天射 | 久久国产乱子免费精品 | 91sao在线看片水片 | 天天影视色香欲综合网老头 | 成人毛片100部免费看 | 欧美激情艳三级 | 亚洲成网站www久久九 | 国产精品秦先生手机在线 | 免费香蕉依人在线视频久 | 视频免费1区二区三区 | 欧美成人h精品网站 | 欧美三级毛片 |