2009-09-15 79 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