摘录自Reference Source:
private void CloneLayoutUpdated(object sender, EventArgs e)
{
Rectangle rect = (Rectangle)SelectionBoxItem;
rect.Width = _clonedElement.RenderSize.Width;
rect.Height = _clonedElement.RenderSize.Height;
VisualBrush visualBrush = (VisualBrush)rect.Fill; // (x)
visualBrush.Viewbox = new Rect(_clonedElement.RenderSize);
visualBrush.Viewport = new Rect(_clonedElement.RenderSize);
}
由于rect.Fill
可能指向SolidColorBrush
,因此我认为第(x)行有错误。
有人(简单吗?)Xaml
/ C#
代码引发异常?
答案 0 :(得分:1)
SelectionBoxItem
是只读依赖项属性。其实际值的创建是在ComboBox
类内部进行的,并且它的任何值都不能从外部传入。如果您检查上面的UpdateSelectionBoxItem
方法,您将看到只有在将SelectionBoxItem
设置为Rectangle
且为{{ 1}}。因此,这些强制转换是“安全的”,rect.Fill在调用该事件处理程序时将永远不会引用VisualBrush
以外的任何东西。