C# 是否重新加载WPF窗口以获得一致的UI?
我在Asp.Net上是一名经验丰富的程序员,如果屏幕上的数据绑定发生变化,我可以重新加载网页 在WPF应用程序中:C# 是否重新加载WPF窗口以获得一致的UI?,c#,wpf,C#,Wpf,我在Asp.Net上是一名经验丰富的程序员,如果屏幕上的数据绑定发生变化,我可以重新加载网页 在WPF应用程序中: main窗口我在组合框中显示了记录。用户单击“添加新的”,我打开一个新的WPF窗口,在DB中添加一个元组,然后返回主窗口 但是主页上的数据绑定已经过时了 我是否应该手动重新绑定主窗口控件的数据 WPF中是否有方法重新绑定页面上的所有控件 适当的绑定应该为您解决这些问题。不需要重新加载任何内容。 主窗口 ObservableCollection<SomeClass> _
main窗口
我在组合框中显示了记录。用户单击“添加新的”,我打开一个新的WPF窗口,在DB中添加一个元组,然后返回主窗口
但是主页上的数据绑定已经过时了
我是否应该手动重新绑定主窗口控件的数据
WPF中是否有方法重新绑定页面上的所有控件
适当的绑定应该为您解决这些问题。不需要重新加载任何内容。 主窗口
ObservableCollection<SomeClass> _mainscreenlist = new ObservableCollection<SomeClass>();
// populate _mainscreenlist with your objects
void OpenNewWindow() {
var window = new YourOtherWindow(_mainscreenlist);
window.Show();
}
ObservableCollection\u mainscreenlist=new ObservableCollection();
//用对象填充_mainscreenlist
void OpenNewWindow(){
var窗口=新建YourOther窗口(\u主屏幕列表);
window.Show();
}
你的另一个窗口
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);
}
private observeCollection\u passedlist;
//
公共YourOther窗口(ObservableCollection passedlist){
_passedlist=passedlist;
}
私有void YourAddMethod(){
//可悲的是,这不适用于元组
//您将需要SomeClass作为您创建实例的类
var x=新的SomeClass();
//将x上的数据设置为适当
//这将触发wpf更新主窗口列表,而无需重新加载窗口
_passedlist.add(x);
}
Xaruth提到INotifyPropertyChanged,这是一个很好的例子
SomeClass应实现INotifyPropertyChanged,因此,如果您的某个项目发生更改,绑定将更新屏幕上的更改。如果您没有正确的绑定设置,则可能需要在向集合添加内容后手动刷新组合框中的项目
combobox.Items.Refresh()
您应该查看MVVM和INotifyPropertyChanged,如上所述 我想我们需要看一些代码来帮助您,您正在使用MVVM吗?类似于
RaisePropertyChange()
?您可以显示您的xaml代码吗。使用mvvm可以解决这个问题。