20230215 WPF 数据绑定以及命令绑定

        <StackPanel x:Name="sp1">
            <Slider Name="slider" Margin="5" Value="{Binding Value}" ></Slider>
            <TextBox Text="{Binding Value ,StringFormat=F2 }"  Margin="5" Height="30"/>
            <TextBox Text="{Binding ElementName=slider, Path=Value,StringFormat=F2 }"  Margin="5" Height="30"/>
            <TextBox Text="{Binding ElementName=slider, Path=Value,  Mode=OneTime}"  Margin="5" Height="30"/>
            <TextBox Text="{Binding ElementName=slider, Path=Value ,Mode=OneWay}"  Margin="5" Height="30"/>
            <TextBox Text="{Binding ElementName=slider, Path=Value ,Mode=TwoWay}"  Margin="5" Height="30"/>
            <TextBox Text="{Binding ElementName=slider, Path=Value ,Mode=OneWayToSource , FallbackValue=5 }"  Margin="5" Height="30"/>
            <Button Name="bt1" Content="点击我" Command="{Binding myCommand}"  Margin="5" Height="30"/>
        </StackPanel>

1)数据绑定比较简单,只要在合适的位置建立数据,然后再XAML中指定绑定的数据(前提要指定绑定的数据源) 为了方便指定,可以给你需要的标签命名,然后用这名字指定数据源,如果整个上下文只有一个数据源,就可以直接用this.DataContext =XXXX

            //NameClass nameClass = new NameClass();
            //this.DataContext = nameClass;
            this.sp1.DataContext = new NameClass();
            //this.DataContext = new MainViewModel();
            this.bt1.DataContext = new MainViewModel();

2)命令绑定需要使用MVVM模型中;首先你需要一个建立的ICommand接口基础上的类;在这里类里面你需要实现下面的两个方法,一个初始化器,以及一个事件,和一个委托字段;

委托字段是用来存储你要关联的命令的,然后执行,初始化器传入需要执行的命令,如果这个命令是没有参数的,就定义没有参数的命令,如果是有参数,或者有返回值的,根据需要定义;

    public class ClassMyCommand : ICommand
    {
        Action actionForCommand;
        public ClassMyCommand( Action action)
        {
            actionForCommand = action;
        }
        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            actionForCommand();
        }

3)定义好这个命令类后,再去定义一个资源类;在这个类里面,首先定义要执行的函数,例如Show();同时定义一个刚刚定义好的类的实例作为这个类的属性;初始化的时候,把函数传递给这个属性,然后属性会把这个函数关联到自己内的委托上,后续命令发送的时候就会触发执行者命令(函数)

    public class MainViewModel
    {
        public ClassMyCommand myCommand { get; set; }
        public MainViewModel() {
            myCommand = new ClassMyCommand(Show);
        }    
        public void Show()
        {
            MessageBox.Show("nihao!");
        }
    }

现在是学习了最简单的MVVM的命令绑定。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值