2011-08-19 137 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