2009-09-15 110 views
1

在這個例子屬性:如何在wpf中設置按鈕樣式的Data屬性?

Data= M150.655, 39.109L10.407, 53.785L0.602, 1.309l158.026-0.806L150.655, 39.109z

請問這個Data性質的工作,並利用這些5個值?

<Style x:Key="ButtonStyler" 

    TargetType="{x:Type Button}"> 
<Setter Property="Cursor" 
     Value="Hand" /> 
<Setter Property="Template"> 

    <Setter.Value> 
    <ControlTemplate 
     TargetType="{x:Type Button}"> 
     <Grid> 

     <Path x:Name="ButtonBG" 
       Fill="Lime" 
       Stroke="#000000" 
       StrokeThickness="3" 

       Data="M150.655,39.109L10.407,53.785L0.602,1.309l158.026-0.806L150.655,39.109z" /> 
     <ContentPresenter x:Name="ContentSite" 
          Margin="20,10,20,10" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          TextBlock.FontFamily="Comic Sans MS" 
          TextBlock.FontSize="20"> 
      <ContentPresenter.RenderTransform> 
      <TransformGroup> 
       <TransformGroup.Children> 
       <TransformCollection> 
        <RotateTransform Angle="-5" /> 
        <ScaleTransform ScaleX="1.5" 
            ScaleY="1" /> 
        <TranslateTransform X="-35" 
             Y="0" /> 
       </TransformCollection> 
       </TransformGroup.Children> 
      </TransformGroup> 
      </ContentPresenter.RenderTransform> 
     </ContentPresenter> 
     </Grid> 
     <ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" 
       Value="true"> 
      <Setter Property="Path.Fill" 
        Value="yellow" 
        TargetName="ButtonBG" /> 
     </Trigger> 
     <Trigger Property="IsPressed" 
       Value="true"> 
      <Setter Property="Path.Fill" 
        Value="lime" 
        TargetName="ButtonBG" /> 
     </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
    </Setter.Value> 
</Setter> 
<Style.Triggers> 
    <Trigger Property="IsMouseOver" 
      Value="true"> 
    <Setter Property="RenderTransform"> 
     <Setter.Value> 
     <TransformGroup> 
      <TransformGroup.Children> 
      <TransformCollection> 
       <RotateTransform Angle="-5" /> 
       <TranslateTransform X="-5" 
            Y="0" /> 
      </TransformCollection> 
      </TransformGroup.Children> 
     </TransformGroup> 
     </Setter.Value> 
    </Setter> 
    </Trigger> 
    <Trigger Property="IsPressed" 
      Value="true"> 
    <Setter Property="RenderTransform"> 
     <Setter.Value> 
     <TransformGroup> 
      <TransformGroup.Children> 
      <TransformCollection> 
       <RotateTransform Angle="-5" /> 
       <TranslateTransform X="-5" 
            Y="5" /> 
      </TransformCollection> 
      </TransformGroup.Children> 
     </TransformGroup> 
     </Setter.Value> 
    </Setter> 
    </Trigger> 
</Style.Triggers> 

回答

2

數據屬性與形狀和幾何路徑相關的不dierectly走進去,首先只是讀取路徑幾何的基本知識,那麼你將能夠理解數據屬性任何形狀的..

3

的數據是模板的Path對象的屬性...

http://msdn.microsoft.com/en-us/library/ms745814.aspx

編輯:

從MSDN DOCO: 數據屬性字符串以「moveto」命令開始,由M表示,該命令在Can的座標系中建立路徑的起點輸精管。路徑數據參數區分大小寫。大寫字母M表示新當前點的絕對位置。小寫的m表示相對座標。第一段是從(100,200)開始到結束於(400,175)的三次貝塞爾曲線,使用兩個控制點(100,25)和(400,350)繪製。該段由Data屬性字符串中的C命令指示。再次,大寫字母C表示絕對路徑;小寫字母c表示相對路徑。

第二段開始的絕對水平的「lineTo」命令H,它指定從前面的子路徑的端點(400175)所畫的線到一個新的端點(280175)。因爲它是一個水平的「lineto」命令,所以指定的值是一個x座標。

有關完整的路徑語法,請參閱Data參考和如何: Create a Shape by Using a PathGeometry

希望這有助於:)

伊恩

+1

此MSDN幫助路徑geometry..i想了解一下在數據屬性 – 2009-09-15 06:29:57

+0

更新回答這些5個參數... – kiwipom 2009-09-15 06:52:02