我正在使用 XamlReader 加载 XAML 文件,并将返回对象设置为窗口的 Content 属性。虽然这似乎工作得很好,但它并没有达到我的预期。如果窗口的原始 XAML 包含键绑定(bind)或按钮,它们似乎仍然存在。键绑定(bind)仍然有效,代码中的任何 Button 对象仍然有效。自从我用新的 XAML 替换它们后,我希望一切都被销毁,但事实并非如此。
那么设置内容到底有什么作用呢?它不做什么?
谢谢!
最佳答案
改变 Content 属性你只是在切换代表 Window 内容的对象,所有的元素树都将被维护,包括绑定(bind)。 在 WPF 中,您不能显式处置控件,因为没有任何东西可以处置,我的意思是,没有非托管资源可以释放。如果以后不引用此控件,GC 将清理它们。对于键绑定(bind),您必须以编程方式删除它们,遍历窗口控件或调用相应的应用程序命令清理器,例如:
ApplicationCommands.Close.InputGestures.Clear();
希望这对您有所帮助!
关于c# - 设置 Window.Content 不会破坏之前存在的 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916732/