求助 在viewmodel中修改BindingList<T> T的一个parameter 画面没有自动刷新
画面是一个自定义的listboxitem 包含3个textbox 在viewmodel中修改 textbox 帮顶的字段 画面没有自动刷新 ,新添一条 或者删除一条没问题,只有当修改其中的一个属性的时候,没有刷新。
而且对象集合里的值已经发生了改变, 求帮助。 wpf mvvm
[解决办法]
以下是伪代码,假设你的ItemsSource 是ObservableCollection<T>
你的T得实现INotifyPropertyChanged接口
public class T : INotifyPropertyChanged
{
public event EventHandler<PropertyChangedEventArgs> PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if(PropertyChanged!=null)
{
……
}
}
}
[解决办法]
不知道你是不是用mvvm,在ViewModel这么做--- 假设你的ItemsSource属性名为Items
那么遍历Items中的T, 使其属性变化事件通知Items
private void OnItemChanged(object sender, PropertyChangedEventArgs e)
{
RaisePropertyChanged("Items");
}
foreach(T item in Items)
{
item.PropertyChanged += OnItemChanged; //每个实体属性变化时都去触发Items绑定更新
}
[解决办法]
textbox中的mode要绑定为TwoWay,如果是实时应用更改而不是lostFocus,绑定中再加上UpdateSourceTrigger=PropertyChanged