Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否重新加载WPF窗口以获得一致的UI?_C#_Wpf - Fatal编程技术网

C# 是否重新加载WPF窗口以获得一致的UI?

C# 是否重新加载WPF窗口以获得一致的UI?,c#,wpf,C#,Wpf,我在Asp.Net上是一名经验丰富的程序员,如果屏幕上的数据绑定发生变化,我可以重新加载网页 在WPF应用程序中: main窗口我在组合框中显示了记录。用户单击“添加新的”,我打开一个新的WPF窗口,在DB中添加一个元组,然后返回主窗口 但是主页上的数据绑定已经过时了 我是否应该手动重新绑定主窗口控件的数据 WPF中是否有方法重新绑定页面上的所有控件 适当的绑定应该为您解决这些问题。不需要重新加载任何内容。 主窗口 ObservableCollection<SomeClass> _

我在Asp.Net上是一名经验丰富的程序员,如果屏幕上的数据绑定发生变化,我可以重新加载网页

在WPF应用程序中:
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可以解决这个问题。