有没有办法刷新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绑定到那将使您的绑定在重新分配“数据”时更新。