完善主體資料,免費贈送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 模板選擇器

    主站蜘蛛池模板: 国产AV天堂无码一区二区三区| 亚洲国产成人久久综合一区77| 亚洲无线码在线一区观看| 国产一区在线观看免费| 美女视频黄a视频全免费网站一区| 国产一区二区三区在线2021| 免费视频一区二区| 精品欧美一区二区在线观看| 国产高清在线精品一区小说 | 麻豆视传媒一区二区三区| 亚洲国产精品第一区二区| 手机福利视频一区二区| 伊人色综合视频一区二区三区| 亚洲夜夜欢A∨一区二区三区 | 亚洲AV无码一区二区二三区入口| 亚洲国产精品第一区二区三区| 日韩美女在线观看一区| 午夜影院一区二区| 人妻av无码一区二区三区| 亚洲国产综合精品中文第一区| 中文字幕人妻丝袜乱一区三区| 亚洲国产精品一区二区九九| 一区视频在线播放| 一区二区三区高清视频在线观看| 国产欧美色一区二区三区| 欧美成人aaa片一区国产精品 | 国产视频一区二区| 亚洲av永久无码一区二区三区| 亚洲综合无码一区二区三区| 亚洲一区免费观看| 伦精品一区二区三区视频| 日韩美女在线观看一区| 欧洲精品码一区二区三区免费看 | 中文字幕一区二区三区在线播放| 国产在线观看精品一区二区三区91 | 国产伦精品一区二区三区不卡| 在线视频一区二区日韩国产| 精品一区中文字幕| 丰满少妇内射一区| 精品欧洲AV无码一区二区男男| 亚洲丰满熟女一区二区哦|