WPF中数据绑定是一个非常强大的功能,不仅可以绑定后台数据,还可以进行实时更新。
数据绑定实例 :
在后台创建模型类,然后在标签页面进行导入并绑定。
cs
第一步:
// 在后台创建模型类
public class MyData
{
public string Name { get; set; } = "李逵";
}
第二步:
// 在标签页面导入实体类
xmlns:c ="clr-namespace:WpfProgram.Entity"
第三步:
// 在标签页面指定数据源
<Grid.Resources>
<c:MyData x:Key="mydataScource"/>
</Grid.Resources>
第四步:
// 在标签页面设置或着获取参与数据绑定时候的上下文,(通俗来讲以后可以在代码里面获取对象)
<Grid.DataContext>
<Binding Source="{StaticResource mydataScource}"/>
</Grid.DataContext>
第五步:
// 在标签页面绑定到目标标签上 label:{Bingding path=对象模型属性}
<Label Content="{Binding Path=Name}" FontSize="20" >
</Label>
数据更新实例:
// 实现数据更新需要再模型类里面添加INotifyPropertyChanged接口
// INotifyPropertyChanged 检查属性是否发生变化的接口
cs
数据更新 :
// 第一步: 在后台设置模型类
public class MyData : INotifyPropertyChanged
{
public string Name { get; set; } = "李逵";
// 实现INotifyPropertyChanged这个接口的PropertyChanged属性
// PropertyChanged类型是委托函数
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
// 当属性修改的时候触发PropertyChanged事件,紧跟着调用该函数
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
《--第二步: 标签设计并绑定数据--》
<Grid Name="g1">
<Grid.Resources>
<c:MyData x:Key="s1"/>
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource s1}" />
</Grid.DataContext>
<!--把数据绑定给Grid标签,Grid下子标签都可以使用-->
<Label Width="100"
Height="40"
Content="{Binding Path=Name}"
VerticalAlignment="Top">
</Label>
</Grid>
// 第三步: 在cs页面创建模型类对象,然后将对象赋值给Grid的DataContext属性 实现数据更新
MyData data = new MyData();
data.Name = "鲁提辖";
this.g1.DataContext = data;
数据更新实例2:
此方法在模型类数据变化时立马调用INotifyPropertyChanged的PropertyChanged函数,比较之前的更新方法此方法更新速度更快,实现数据更新,界面立马更新。
INotifyPropertyChanged接口 :
实现数据更新需要再模型类里面添加INotifyPropertyChanged接口
INotifyPropertyChanged 检查属性是否发生变化的接口。
cs
数据更新 :
// 第一步在后台设置模型类
public class MyData : INotifyPropertyChanged
{
private string name = "LIHX";
public string Name
{
get
{
return name;
}
set
{
name= value;
// 当数据更新时立刻在set里面调用OnProChanged函数
OnProChanged("Name");
}
}
// 实现INotifyPropertyChanged这个接口的PropertyChanged属性
// PropertyChanged类型是委托函数
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnProChanged(string propertyName)
{
// 当属性修改的时候触发PropertyChanged事件,紧跟着调用该函数
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
// 第二步设置标签布局并且进行数据绑定
<Grid Name="g1">
<Grid.Resources>
<c:MyData x:Key="s1"/>
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource s1}" />
</Grid.DataContext>
<!--把数据绑定给Grid标签,Grid下子标签都可以使用-->
<Label Width="100"
Height="40"
Content="{Binding Path=Name}"
VerticalAlignment="Top">
</Label>
</Grid>
// 第三步在cs页面创建模型类对象,然后将对象赋值给Grid的DataContext属性 实现数据更新
MyData data = new MyData();
data.Name = "鲁提辖";
this.g1.DataContext = data;