我正在使用XamlReader加载XAML文件,并将返回的对象设置为窗口的Content属性。虽然这似乎运作良好,但它并没有完全符合我的预期。如果窗口的原始XAML包含键绑定或按钮,它们似乎仍然存在。键绑定仍然有效,代码中的任何Button对象仍然有效。我会期望所有东西都被销毁,因为我用新的XAML替换了它们但事实并非如此。
那么设置内容究竟做了什么?它不做什么?
谢谢!
答案 0 :(得分:1)
更改Content属性只是切换表示Window内容的对象,将维护所有元素树,包括绑定。 在WPF中,你不能明确地处理一个控件,因为没有任何东西需要处理,我的意思是,没有任何非托管资源可以释放。如果以后不引用此控件,GC将清除它们。对于键绑定,您必须以编程方式删除它们,迭代窗口控件或调用相应的应用程序命令清理器,例如:
ApplicationCommands.Close.InputGestures.Clear();
希望这有帮助!