Est-il possible d'actualiser toutes les liaisons dans WPF?
Si mon code est un peu comme le code en dessous, serait-il possible d'actualiser toutes les liaisons directement ou je dois coder en dur toutes les liaisons pour actualiser?
Côté Service:
[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;
}
Côté Client xaml (espace de noms de code réutilisable omis):
<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>
Code côté Client-derrière:
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
}
}
Veuillez ignorer les violations des normes de codage dans l'exemple de code car il est simplement à titre d'exemple pour l'utilisation prévue.
OriginalL'auteur Teo Klestrup Röijezon | 2011-03-01
Vous devez vous connecter pour publier un commentaire.
Trouvé la réponse, il semble que l'appel à PropertyChanged avec le PropertyChangedEventArgs nom de la propriété définie à
""
actualise toutes les liaisons.Le DataContext évolution de travailler aussi, bien qu'il se sentait un peu plus "propre".
OriginalL'auteur Teo Klestrup Röijezon
Vous pouvez null puis re-définir le DataContext de l'objet parent.
Je crois me souvenir que cela ne fonctionne pas, pas de. Je pense qu'il se rend compte que vous avez mis à la même référence, et donc ne pas les relier.
Je pense que c'est pourquoi BenCr suggéré à la première "null puis re-définir le" sens null comme un verbe pour définir le DataContext à null et ensuite revenir à l'original DataContext de sorte qu'il voit comme un changement.
C'est en effet ce que je suggère.
J'ai besoin de retirer mes commentaires précédents. L'échec de l'INTERFACE utilisateur de mise à jour a été due à une exception levée bu une autre ligne de code sous le scénario décrit. Réglage de la DataContext null lors de la suppression du dernier Maître de l'élément n'est en fait le résultat dans le volet de Détails "compensation" toutes les valeurs dans l'INTERFACE utilisateur.
OriginalL'auteur BenCr
Comment sur faire des "données" d'une propriété de dépendance. La liaison de votre DataContext à qui fera de vos fixations de mise à jour lorsque vous ré-attribuer des "données".
OriginalL'auteur Holstebroe