有没有一种方法可以刷新WPF中的所有绑定? [英] Is there a way to refresh all bindings in WPF?
问题描述
如果我的代码看起来像下面的代码,是否可以直接刷新所有绑定,还是必须对所有绑定进行硬编码才能刷新?
If my code looks somewhat like the code beneath, would it be possible to refresh all bindings directly or would I have to hard-code all the bindings to refresh?
服务端:
[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(省略了命名空间样板代码):
Client-side xaml (namespace boilerplate code omitted):
<Window x:Class="MyWindow" DataContext="{Binding RelativeSource={RelativeSource Self}}" Title="{Binding Path=val1, Mode=OneWay}">
<DockPanel>
<TextBlock Text="{Binding Path=val1, Mode=OneWay}"/>
<TextBlock Text="{Binding Path=val2, Mode=OneWay}"/>
</DockPanel>
</Window>
客户端代码行为:
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
}
}
请忽略示例代码中的任何违反编码标准的行为,因为它仅是作为预期用途的示例.
Please disregard any coding standards violations in the example code since it is simply intended as an example for the intended use.
推荐答案
找到了答案,似乎是在将PropertyChangedEventArgs属性名称设置为""
的情况下调用PropertyChanged会刷新所有绑定.
更改DataContext的方法也可以,尽管感觉有点干净".
Found the answer, seems like that calling PropertyChanged with the PropertyChangedEventArgs property name set to ""
refreshes all bindings.
The DataContext changing worked too, although this felt a bit "cleaner".
这篇关于有没有一种方法可以刷新WPF中的所有绑定?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!