【发布时间】:2009-05-27 16:27:34
【问题描述】:
我正在使用 XamlReader 加载 XAML 文件并将返回对象设置为窗口的 Content 属性。虽然这似乎运作良好,但它并没有达到我的预期。如果窗口的原始 XAML 包含键绑定或按钮,它们似乎仍然存在。键绑定仍然有效,代码中的任何 Button 对象仍然有效。自从我用新的 XAML 替换它们后,我原以为一切都会被销毁,但事实并非如此。
那么设置内容到底有什么作用呢?它不做什么?
谢谢!
【问题讨论】:
我正在使用 XamlReader 加载 XAML 文件并将返回对象设置为窗口的 Content 属性。虽然这似乎运作良好,但它并没有达到我的预期。如果窗口的原始 XAML 包含键绑定或按钮,它们似乎仍然存在。键绑定仍然有效,代码中的任何 Button 对象仍然有效。自从我用新的 XAML 替换它们后,我原以为一切都会被销毁,但事实并非如此。
那么设置内容到底有什么作用呢?它不做什么?
谢谢!
【问题讨论】:
更改 Content 属性只是切换表示 Window 内容的对象,所有元素树都将保留,包括绑定。 在 WPF 中,您不能显式地处置控件,因为没有什么可处置的,我的意思是,没有要释放的非托管资源。如果以后不引用此控件,GC 将清除它们。对于键绑定,您必须以编程方式删除它们,遍历窗口控件或调用相应的应用程序命令清理器,例如:
ApplicationCommands.Close.InputGestures.Clear();
希望这会有所帮助!
【讨论】: