有没有办法刷新WPF中的所有绑定?

如果我的代码看起来有点像下面的代码,是否可以直接刷新所有绑定或我是否必须硬编码所有绑定刷新?

服务端:

[ServiceContract] public interface IMyServiceContract { [OperationContract] MyDataContract GetData(); } [ServiceBehavior] public class MyService { [OperationBehavior] public MyDataContract GetData() { MyDataContract data = new MyDataContract(); data.val1 = "123"; data.val2 = "456"; return data; } } [DataContract] public class MyDataContract { [DataMember] public string val1; public string val2; } 

客户端xaml(省略了名称空间样板代码):

       

客户端代码behing:

 public partial class MyWindow { MyServiceClient client = new MyServiceClient(); MyDataContract data; public string val1 {get{return data.val1;}} public string val2 {get{return data.val2;}} DispatcherTimer updateTimer = new DispatcherTimer(); public MyWindow() { timer.Interval = new TimeSpan(0, 0, 10); timer.Tick += new EventHandler(Tick); Tick(this, null); timer.Start(); InitializeComponent(); } void Tick(object sender, EventArgs e) { data = client.GetData(); // Refresh bindings } } 

请忽略示例代码中的任何编码标准违规,因为它仅用作预期用途的示例。

找到答案,似乎调用PropertyChanged并将PropertyChangedEventArgs属性名设置为""刷新所有绑定。
DataContext的改变也起作用,虽然这感觉有点“干净”。

您可以为null,然后重新设置父对象的DataContext。

 DataContext = null; DataContext = data; 

如何使“数据”成为依赖属性。 将DataContext绑定到那将使您的绑定在重新分配“数据”时更新。