【发布时间】:2012-08-21 18:32:55
【问题描述】:
Windows 8 风格应用(例如“Metro”)、Visual Studio 2012、XAML。
我有一个从 Canvas 派生的 UserControl。它有一个子元素 - 一个多边形,其数据绑定到一个属性(实现了 INotifyPropertyChanged):
<Canvas x:Name="MyPolygon">
<Polygon Points="{Binding ElementName=MyPolygon,Path=MyPoints}" ... />
</Canvas>
如果我在 XAML 中的其他地方实例化该控件,并传入一个字符串,则在设计时和运行时都设置了属性并正确呈现了 Polygon:
<local:MyPolygon MyPoints="..." />
但是,更改该字符串中的值是乏味的。设计师希望有一些 UI 结(如椭圆)在设计时可见但在运行时不可见,以便他们可以将它们拖到设计器中并让 Polygon 动态重建其几何形状:
<local:MyPolygon>
<Ellipse Canvas.Left="204" Canvas.Top="57" ... />
<Ellipse Canvas.Left="166" Canvas.Top="30" ... />
...
</local:MyPolygon>
基本上我想将几何信息保留在(扩展的).Children 中。这可能吗?
(可能有一些事件/构造函数,控件可以在其中检查其 .Children(在插入这些椭圆之后)、检索它们的坐标并构建 MyPoints。设计者必须触发该事件才能使几何图形在设计时间)
【问题讨论】:
标签: c# xaml windows-8 microsoft-metro visual-studio-2012