赞
踩
INotifyPropertyChanged 接口:用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace Demo1 { public class MainViewModel:INotifyPropertyChanged { //创建一个类 用于事件的处理 //如何和按钮建立关系 使用Icommand接口 用于建立连接 public MainViewModel () { Name = "Text"; showCommand = new MyCommand(show);//传入对应的参数 } private string name; public string Name { get { return name; } set { name = value;//设置value的值 但需要调用PropertyChanged PropertyChanged ?.Invoke(this, new PropertyChangedEventArgs("Name"));//将name的值传入到Name当中 从而使text文本的值发生改变 将值更改到UI界面上 } }//默认值 public MyCommand showCommand { get; set; } public void show() { Name = "请点击我一下"; MessageBox.Show(Name); } public event PropertyChangedEventHandler? PropertyChanged;//事件的声明 } }
完成对text文本的值更改
<Grid>
<StackPanel>
<TextBox Text="{Binding Name}"></TextBox>
<Button Content="show" Command="{Binding showCommand}"></Button>
</StackPanel>
</Grid>
对于对多个值的更改 将调用的内容 封装到对应的函数 可以添加一个专门用于更改值的类中
namespace Demo1
{
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;//定义事件
public void onproperchanged(string propername)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("propername"));
}
}
}
继承ViewModelBase 类即可 在具体使用的时候调用onproperchanged函数
namespace Demo1 { public class MainViewModel: ViewModelBase//重点*** { //创建一个类 用于事件的处理 //如何和按钮建立关系 使用Icommand接口 用于建立连接 public MainViewModel () { Name = "Text"; showCommand = new MyCommand(show);//传入对应的参数 } private string name; public string Name { get { return name; } set { name = value;//设置value的值 但需要调用PropertyChanged onproperchanged("Name"); //将name的值传入到Name当中 从而使text文本的值发生改变 重点*** } }//默认值 public MyCommand showCommand { get; set; } public void show() { Name = "请点击我一下"; MessageBox.Show(Name); } } }
如何让函数自动识别需要修改的值???
需要修改封装的类
public void onproperchanged([CallerMemberName] string propername="")
此时不需要传入参数
public string Name {
get { return name; }
set {
name = value;//设置value的值 但需要调用PropertyChanged
onproperchanged(); //将name的值传入到Name当中 从而使text文本的值发生改变
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。