Comment pouvez-vous cloner un objet WPF?
Quelqu'un a un bon exemple de la façon de profondeur cloner un objet WPF, la préservation de databindings?
L'marqué réponse est la première partie.
La seconde partie est que vous devez créer un ExpressionConverter et à l'injecter dans le processus de sérialisation. Les détails de ce sont ici:
http://www.codeproject.com/KB/WPF/xamlwriterandbinding.aspx?fid=1428301&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2801571
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple que j'ai fait c'est d'utiliser un XamlWriter pour enregistrer l'objet WPF comme une chaîne de caractères. La méthode Save va sérialiser l'objet et tous ses enfants dans l'arborescence logique. Maintenant, vous pouvez créer un nouvel objet et de le charger avec un XamlReader.
ex:
Écrire l'objet de xaml (disons que l'objet était un contrôle de la Grille):
De le charger dans un nouvel objet:
Dans .NET 4.0, la nouvelle xaml sérialisation pile cela rend BEAUCOUP plus facile.
{Binding}
s sont conservés.Il y a quelques grandes réponses ici. Très utile. J'avais essayé différentes approches pour la copie des informations de Liaison, y compris l'approche décrite dans http://pjlcon.wordpress.com/2011/01/14/change-a-wpf-binding-from-sync-to-async-programatically/ mais l'information ici est le meilleur sur Internet!
J'ai créé un ré-utilisable de la méthode d'extension pour traiter InvalidOperationException “Liaison ne peut pas être changé après qu'il a été utilisé.” Dans mon scénario, j'ai été le maintien du code quelqu'un a écrit, et après une importante DevExpress DXGrid cadre de la mise à niveau, il ne travaillait plus. Le suivant a résolu mon problème à la perfection. La partie du code où je retourne l'objet pourrait être plus agréable, et je vais re-facteur que plus tard.
Comment sur:
Bien sûr, cette profonde clones n'importe quel objet, et il ne pourrait pas être la solution la plus rapide en ville, mais il a le moins d'entretien... 🙂