我是Asp.Net的一名经验丰富的程序员,如果屏幕上的数据绑定发生了变化,我可以重新加载网页。
在WPF应用程序中:
MainWindow
我在combox中显示了记录。用户点击 Add New
,我打开一个新的WPF窗口,将一个元组添加到数据库并返回MainWindow。
但MainPage上的数据绑定已过时。
我应该手动重新绑定MainWindow控件的数据吗?
WPF中有没有办法重新绑定页面上的所有控件?
答案 0 :(得分:1)
正确的绑定应该为您解决这些问题。什么都不应该重新加载。 主窗口
ObservableCollection<SomeClass> _mainscreenlist = new ObservableCollection<SomeClass>();
// populate _mainscreenlist with your objects
void OpenNewWindow() {
var window = new YourOtherWindow(_mainscreenlist);
window.Show();
}
YourOtherWindow
private ObservableCollection<SomeClass> _passedlist;
//
public YourOtherWindow(ObservableCollection<SomeClass> passedlist) {
_passedlist = passedlist;
}
private void YourAddMethod() {
// sadly this doesnt work so will with tuples
// you will need SomeClass to be a class you create an instance of
var x = new SomeClass();
// set data on x as appropiate
// this triggers wpf to update the mainwindow list, without reloading the window
_passedlist.add(x);
}
Xaruth提到INotifyPropertyChanged,它有一个很好的例子INotifyPropertyChanged
您的SomeClass应该实现INotifyPropertyChanged,以便稍后如果您的某个项目发生更改,绑定将更新屏幕上的更改。
答案 1 :(得分:0)
如果您没有正确的绑定设置,那么您可能需要在向集合添加内容后手动刷新组合框中的项目。
combobox.Items.Refresh()
您应该查看上面提到的MVVM和INotifyPropertyChanged。