WPF数据绑定模式
程序员文章站
2022-06-09 15:58:06
...
三种数据绑定模式
1.OneTime:一次绑定
在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。{Binding xxx} xxx表示属性名
默认的绑定模式是一次绑定OneTime。
这种数据绑定模式,只是显示数据而不对数据做任何修改
<TextBlock x:Name="lblAge" Foreground="White" FontSize="18"
Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left"
Text="{Binding Age}"/>
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
User user = new User();
user.Name = "TerryLee";
user.Age= 15;
lblName.DataContext = user;
lblAge.DataContext = user;
}
2.OneWay:单向绑定
在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。{Binding xxx,Mode=OneWay}
3.TwoWay:双向绑定
在任何时候都可以同时更新源数据和目标。{Binding xxx,Mode=TwoWay}
如果需要在数据源发生变化时能够通知UI进行相应的更新,即使用单向绑定OneWay或者双向绑定TwoWay,则业务实体需要实现接口INotifyPropertyChanged。
class Person: INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
public int Age { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
绑定的实体必须实现该接口,否则数据无法变换。
<TextBox x:Name="txtName" Text="{Binding Name,Mode=OneWay}" HorizontalAlignment="Left" Height="44" Margin="106,151,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
通过一个按钮,再点击了按钮之后文本框中的信息自然就会发生改变。
Personperson ;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
person = new Person();
person.Name = "张三";
person.Age = 18;
txtName.DataContext = person;
}
private void button_Click(object sender, RoutedEventArgs e)
{
person.Name = "李四";
}
队列表的数据绑定
<ListBox x:Name="PostList" Grid.Column="0" Grid.Row="1"
Margin="40 10 10 10"
HorizontalContentAlignment="Left" VerticalContentAlignment="Bottom"
ItemsSource="{Binding Posts}">
</ListBox>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<String> Posts = new List<String>
{
"第一通道",
"第二通道",
"第三通道",
"第四通道"
};
PostList.DataContext = blog;
}