WPF——控件绑定到数据后 第一次加载界面时绑定成功 但后来数据源发生变化 控件无变化

1.在 window_Loaded中设定对象绑定到源

private void window_Loaded(object sender, RoutedEventArgs e)
{
     CurUserName.DataContext = CurrentUserAAA;
}

2.将对象属性绑定到数据源的属性


<Label x:Name="CurUserName"  Content="{Binding Name}" />

3.为什么源数据发生变化时 对象未变化?

因为在代码执行中 将数据源指向了其它的对象  如:CurUserName = CurrentUserBBB

但是绑定对象仍然是指向CurrentUserAAA   所以来后来对象不会再发生变化

切记:只可改变数据源的属性  但不能改变数据源的指向

WPF中,`DataGrid` 是一种用于显示和编辑表格数据的强大控件。当你使用 `ItemsSource` 属性将数据绑定到一个集合(如 `ICollectionView`, `ObservableCollection`, 或自定义 `INotifyPropertyChanged` 实现的类),当集合中的数据发生变化,`DataGrid` 的视图通常会自动更新,显示新的或已更改的数据。 如果你的数据源实现了 `INotifyCollectionChanged` 接口,那么每当添加、删除或更改集合中的元素,`DataGrid` 都会检测到这些变化并相应地更新视图。对于 `ObservableCollection` 和许多内置类型的集合,它们默认已经实现了这个接口。 然而,如果你想确保 `DataGrid` 内部单元格的内容直接反映数据源的变更,你需要确保数据模型(即数据源中具体元素)也实现了 `INotifyPropertyChanged`,这样当属性值改变,`DataGrid` 会监听到这种变化并进行刷新。 例如: ```csharp public class MyViewModel : INotifyPropertyChanged { private string _value; public string Value { get => _value; set { _value = value; OnPropertyChanged("Value"); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` 然后,在绑定 DataGrid 到数据源: ```xaml <DataGrid ItemsSource="{Binding MyCollection}"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Value}"/> </DataGrid.Columns> </DataGrid> ``` 在这里,当你在代码背后或者从外部改变 `MyViewModel.Value` 的值,`DataGrid` 中相应的单元格就会更新显示新值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值