2011-08-19 96 views
0

我创建了一个形状在于canvas元素:C#WPF问题的建筑物形状

<Canvas HorizontalAlignment="Left" Width="47" Height="71"> 
    <Polygon Points="25 0 10 43 40 43" Stroke="Black" Fill="Orange" Height="45" Canvas.Left="0" Canvas.Bottom="0" Width="47"></Polygon> 
      <Ellipse Height="20" Width="20" Stroke="Black" Fill="Black" Canvas.Bottom="45" Canvas.Left="15"></Ellipse> 
    </Canvas> 

而且我当我点击按钮就应该在另一个画布容器创建这样的元素!

如何在我的代码中多次重复使用此构造的Shape而不用在XAML中多次写入它?

我已阅读了关于模板和样式的内容。但我不能真正适应我的问题。因为我想在运行时创建这些形状。

+0

是否形状总是存在的一个Polygon和Ellipse,只有不同的值? – 321X

+0

始终存在并始终具有相同的值!我只想在运行时将它们插入到我现有的画布中(几次!!) – michaelt

回答

0

你可以声明多边形资源这样

<Window.Resources> 
     <Polygon x:Key = "Poly" Points="25 0 10 43 40 43" Stroke="Black" Fill="Orange" Height="45" Canvas.Left="0" Canvas.Bottom="0" Width="47"/> 
</Window.Resources> 

然后你可以使用它像这样

<ContentControl Content="{StaticResource Poly}"/> 

同样,你可以做

<Window.Resources> 
    <Canvas HorizontalAlignment="Left" Width="47" Height="71" x:Key="MyShape"> 
     <Polygon Points="25 0 10 43 40 43" Stroke="Black" Fill="Orange" Height="45" Canvas.Left="0" Canvas.Bottom="0" Width="47"></Polygon> 
     <Ellipse Height="20" Width="20" Stroke="Black" Fill="Black" Canvas.Bottom="45" Canvas.Left="15"></Ellipse> 
    </Canvas> 
</Window.Resources> 

<ContentControl Content="{StaticResource MyShape}"/> 
+0

如何在代码隐藏文件中添加此资源控件? – michaelt

+0

在代码背后,你可以通过FindResource(“MyShape”)来访问这个资源' –

+0

我试过了:Canvas myCanvas = new Canvas(); myCanvas = FindResource(“MyShape”)as Canvas; myBaseCanvas.Children。(myCanvas);但是我创建了一个形状,第二次出现错误:该元素已经在canvas元素下面了! – michaelt