我试图在我的应用中尝试重用矢量图形。 我目前的方法是在UserControls中使用图形,它工作得很好,但我不喜欢它。 我试图通过ControlTemplates设置图形,为此我创建了一个空的" BlankControl"它继承自Control,并且绝对没有(现在)。
我遇到的问题是在尝试应用包含Polygon的ControlTemplate时(所有其他内容都可以正常工作)。
这是有问题的ControlTemplate:
<ControlTemplate TargetType="sharedcontrols:BlankControl" x:Key="controlTemplate">
<Viewbox>
<!--This file is compatible with Silverlight-->
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Name="Capa_1" Width="62.627" Height="63.636" Canvas.Left="0" Canvas.Top="0">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Canvas.RenderTransform>
<Canvas.Resources/>
<!--Unknown tag: metadata-->
<!--Unknown tag: sodipodi:namedview-->
<Canvas Name="g3">
<Canvas Name="g5">
<Canvas Name="g7">
<Ellipse Fill="White" Width="55" Height="55" Canvas.Left="5" Canvas.Top="5"/>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path9" Fill="Blue" Data="M32.55 56.896c-13.674 0-24.795-11.123-24.795-24.795 c0-13.674 11.121-24.795 24.795-24.795s24.795 11.121 24.795 24.795C57.345 45.772 46.224 56.896 32.55 56.896z M32.55 3.101 c-15.994 0-29 13.006-29 29s13.006 29 29 29s29-13.006 29-29S48.544 3.101 32.55 3.101z"/>
<Polygon Points="0,0 8,5, 0,10" Stroke="Black" Fill="Black" />
</Canvas>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ControlTemplate>
正如我所提到的,如果我删除了Polygon,它会完美呈现,但是多边形会使一切变得混乱,它会抛出以下异常:
Error Unable to cast object of type 'Windows.UI.Xaml.Media.PointCollection' to type 'System.Windows.Media.PointCollection'.
真的,非常奇怪的错误,似乎认为我传递的PointCollection是另一种类型。更奇怪的是,如果我从ControlTemplate中取出多边形并将其放在XAML上的任何其他位置,它会呈现OK,因此问题在于ControlTemplate。
有什么想法吗?
谢谢
答案 0 :(得分:0)
这条消息看起来相当令人困惑,但你的Points集合中包含所有逗号和空格以及没有小数点(在XAML中使用句点字符完成 - &#39;。&#39;)。通常,您使用Path元素并使用xaml中用于矢量图形的迷你语言标记将其Data属性设置为几何。这看起来很简单:https://msdn.microsoft.com/en-us/subscriptions/index/cc189041(v=vs.95).aspx
我不会直接使用Polygon
元素。理想情况下,您可以在Blend之类的东西中创建几何体,或者使用它来说明一个来自Illustrator文件并将Path
元素粘贴到您的XAML中甚至更好 - 将其转换为更适合矢量渲染的字体文件。
在您的情况下,您可以先尝试更改此内容......
0,0 8,5, 0,10
...到此
0,0 8,5 0,10
...看看是否能解决问题。