2014-01-14 139 views
0

我是新來WPFWPF畫布從資源添加元素

<Window.Resources> 
     <Ellipse x:Key="connectorNode" Height="20" Width="20" Fill="Green" Stroke="Black" StrokeThickness="2" MouseMove="Ellipse_MouseMove" MouseLeftButtonDown="Ellipse_MouseLeftButtonDown" MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"></Ellipse> 
</Window.Resources> 

我怎樣才能在資源畫布添加橢圓的一個實例,我只需要指定Canvas.LeftCanvas.Right但使用相同的屬性值作爲資源

<Canvas> 
</Canvas> 
+0

你想這樣做在XAML或代碼? – Terry

+0

@Djerry我已經在代碼中做了它,但我也需要在xaml中進行測試 – user1492051

+0

您通常不會使用任何UI元素作爲資源。你想達到什麼目的?請注意,您甚至無法將Ellipse同時添加到多個面板。 – Clemens

回答

2

好像你要創建一個通用的風格,並將其應用到每一個橢圓補充說,這是你如何能做到這:

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style x:Key="EllipseStyle" TargetType="Ellipse"> 
      <Setter Property="Height" Value="20"/> 
      <Setter Property="Width" Value="20" /> 
      <EventSetter Event="Control.MouseMove" Handler="Control_MouseMove" /> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <Canvas> 
      <Ellipse Style="{StaticResource EllipseStyle}" /> 
     </Canvas> 
    </Grid> 
</Window> 

編輯:我已經添加了「EventSetter」,因此您的事件可以在樣式中定義(請參閱this post)。

+0

您不能像這樣設置「MouseMove」這樣的事件處理程序。 –

+0

@Novitchi我想,我將不得不將它們添加到每個實例 – user1492051

+0

這已經解決了所有的設計參數。 – Terry

1

如果你真的想從資源利用的元素,只適用於畫布屬性,你可以這樣來做:

<Window.Resources> 
    <ControlTemplate x:Key="connectorNode" > 
     <Ellipse 
      Height="20" 
      Width="20" 
      Fill="Green" 
      Stroke="Black" 
      StrokeThickness="2" 
      MouseMove="Ellipse_MouseMove" 
      MouseLeftButtonDown="Ellipse_MouseLeftButtonDown" 
      MouseLeftButtonUp="Ellipse_MouseLeftButtonUp" /> 
    </ControlTemplate> 
</Window.Resources> 
<Canvas> 
    <ContentControl Template="{StaticResource connectorNode}"/> 
    <ContentControl Canvas.Left="50" Template="{StaticResource connectorNode}"/> 
</Canvas>