在.NET 4.0以下的代码引发InvalidOperationException
并显示消息“指定的元素已经是另一个元件的逻辑子。首先断开它。”
var parent = new System.Windows.Controls.ContentControl();
var child = new System.Windows.Controls.Button();
parent.Content = child;
var parent2 = new System.Windows.Controls.ContentControl();
parent2.Content = child; // throws InvalidOperationException in .Net 4.0, not in 4.5
但是,在运行的机器上的代码,在不例外.NET 4.5安装结果被抛出。 这似乎引起视觉树有一些奇怪的状态,这表现为一个不正确的UI。
为什么也不例外? 该throw
声明似乎仍然存在于.NET 4.5 FrameworkElement.AddLogicalChild
。 什么会导致它被甩不?
我很高兴接受的行为改变了一个很好的理由,我不得不改变我的编码,但是,因为它代表,沉默的失败,腐败的UI看起来像强异常一种倒退时的明确断开FrameworkElement
从逻辑树福尔戈。