我正在将WPF解决方案移植到WindowsPhone。
我从System.Windows.Shapes
exist on Windows Phone 8了解此属性。
我的问题是我添加了using System.Windows.Shapes;
,但我仍然无法访问它。如果我打开System.Windows.Shapes
,我就无法看到它。
我认为我没有正确的程序集(PresentationFramework(在PresentationFramework.dll中))。
我不是the first one to ask。如果我真的能做到。我可以做同等的吗?
刚刚在SO中找到kind of duplicate question。答案并没有解决问题,但它可以是一个开始。
我怎样才能做到这一点?
(我在PresentationCore遇到了同样的问题,但我设法躲闪了。)
答案 0 :(得分:1)
DefiningGeometry是受保护的属性,这就是您无法访问它的原因。
渲染形状后,您可以使用RenderedGeometry,但我不知道您是否可以信任该属性。
另一种选择是检查你拥有的几何类型,投射它并手动转换它。
修改强>
使用RenderedGeometry:
Geometry GetGeometry(Shape shape)
{
return shape.RenderedGeometry;
}
手动投射:
Geometry GetGeometry(Shape shape)
{
Rectangle rectangle = shape as Rectangle;
if (rectangle != null)
{
return new RectangleGeometry(new Rect(0, 0, 1, 1), rectangle.RadiusX, rectangle.RadiusY, rectangle.GeometryTransform);
}
Ellipse ellipse = shape as Ellipse;
if (ellipse != null)
{
//...
}
// ...
}
正如我在MSDN中看到的,除了下面写的Rectangle的示例代码之外,你还必须编写类似的代码:Rectangle,Ellipse,Line,Path,Polygon和Polyline。
http://msdn.microsoft.com/en-us/library/system.windows.shapes.shape.aspx#inheritanceContinued