WPF Databinding的几种方式
有时候会和UWP、其他语言的绑定弄混,这里做一下备份记录
两种情况,一种使用viewmodel,一种直接绑定。
一、直接绑定
要绑定的对象(比如page、Window)直接实现INotifyPropertyChanged
接口,如下例子:
public partial class LoginPage : Page, INotifyPropertyChanged
{
bool SettingsShow = false;
private string intvalue = "aaa";//私有
public event PropertyChangedEventHandler? PropertyChanged;
public string IntValue
{
get { return intvalue; }//获取值时将私有字段传出;
set
{
intvalue = value;//赋值时将值传给私有字段
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IntValue"));//一旦执行了赋值操作说明其值被修改了,则立马通过INotifyPropertyChanged接口告诉UI(IntValue)被修改了
}
}
public LoginPage()
{
InitializeComponent();
DataContext= this;
}
}
在布局文件中标注:
d:DataContext="{d:DesignInstance Type=local:LoginPage}"
就可以直接使用类似 Text="{Binding IntValue}"
这样的方式绑定了
二、使用viewmodel
使用mvvm库 Nuget安装CommunityToolkit.Mvvm
public class TicketSaleViewmodel : ObservableRecipient
{
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public bool IsMember { get; set; }
}
public string a = "asd";
public string A
{
get { return a; }
set { a = value; OnPropertyChanged(nameof(A));}
}
private ObservableCollection<YourBean> _myBeans = new ObservableCollection<YourBean>(){};
public ObservableCollection<YourBean> MyBeans
{
get { return _myBeans;}
set { _myBeans = value; OnPropertyChanged(nameof(MyBeans));}
}
}
近期评论