2012-02-28 72 views
1

我爲各種形狀的UserControl設計了一種風格,例如Star,Ball,Sky等。所有這些形狀都是使用路徑設計的。我需要使用樣式讀取usercontrol的內容,並調整寬度和高度並顯示內容。設計UserControl風格,內容介於

<Style TargetType="{x:Type UserControl}"> 
    <Setter Property="Background" Value="#CCC4C4" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type UserControl}"> 
       <Path 
      Data="F1M37.3,41.5L24.0,34.8 10.7,41.4 13.2,27.3 2.5,17.3 17.4,15.3 24.0,2.5 30.6,15.3 45.5,17.4 34.7,27.3 37.3,41.5z" 
      Fill="White" 
      Height="{TemplateBinding Height}" 
      Width="{TemplateBinding Width}" 
      Stroke="#FFC4A000" 
      StrokeMiterLimit="4" 
      StrokeThickness="1"> 

     </Path> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

回答

0

可以使用ContentControl,它是一個Container可以充滿個人內容。

下面是一個例子:

<Grid> 
    <Grid.Resources> 
     <Style TargetType="{x:Type ContentControl}"> 
     <Setter Property="Background" Value="#CCC4C4" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ContentControl}"> 
       <Path 
      Data="F1M37.3,41.5L24.0,34.8 10.7,41.4 13.2,27.3 2.5,17.3 17.4,15.3 24.0,2.5 30.6,15.3 45.5,17.4 34.7,27.3 37.3,41.5z" 
      Fill="White" 
      Stretch="Fill" 
      Stroke="#FFC4A000" 
      StrokeMiterLimit="4" 
      StrokeThickness="1"> 

       </Path> 
      </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     </Style> 
    </Grid.Resources> 

    <StackPanel> 
     <!-- the below ones become stars --> 
     <ContentControl></ContentControl> 
     <ContentControl></ContentControl> 
     <ContentControl></ContentControl> 
    </StackPanel> 

    </Grid> 

編輯:

如果你想的明星來調整它的可用空間,使用拉伸=填充,而不是用和高度結合(改變了以上)。