2009-05-27 13 views
3

Ich lade eine XAML-Datei mit XamlReader und setze das Rückgabeobjekt auf die Content-Eigenschaft des Fensters. Während dies gut zu funktionieren scheint, tut es nicht ganz das, was ich erwarte. Wenn das ursprüngliche XAML des Fensters Tastaturbelegungen oder Schaltflächen enthält, scheinen sie noch vorhanden zu sein. Keybindings funktionieren weiterhin und alle Button-Objekte im Code sind noch gültig. Ich hätte erwartet, dass alles zerstört wird, seit ich sie durch ein neues XAML ersetzt habe, aber das ist nicht der Fall.Einstellung Window.Content zerstört nicht die Benutzeroberfläche, die vorher dort war?

Was genau macht das Einstellen von Inhalten? Was macht es nicht?

Danke!

Antwort

1

Wenn Sie die Content-Eigenschaft ändern, indem Sie nur das Objekt wechseln, das den Inhalt des Fensters darstellt, wird die gesamte Elementstruktur einschließlich der Bindungen beibehalten. In WPF können Sie ein Steuerelement nicht explizit entsorgen, da nichts zu disponieren ist, dh keine nicht verwalteten Ressourcen freigegeben werden müssen. Wenn Sie diese Steuerelemente später nicht verwenden, bereinigt der GC sie. Für keybindings werden Sie sie haben programmatisch zu entfernen, Iterieren durch Fensterhebern oder den jeweiligen Anwendungsbefehl cleaner Aufruf, zum Beispiel:

ApplicationCommands.Close.InputGestures.Clear(); 

hoffe, das hilft!

Verwandte Themen