在此示例属性中:
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>
答案 0 :(得分:3)
数据是模板中Path对象的属性...
http://msdn.microsoft.com/en-us/library/ms745814.aspx
编辑:
来自msdn doco: Data属性字符串以“moveto”命令开头,由M表示,它为Canvas的坐标系中的路径建立起点。路径数据参数区分大小写。大写字母M表示新当前点的绝对位置。小写的m表示相对坐标。第一段是从(100,200)开始到(400,175)结束的三次贝塞尔曲线,使用两个控制点(100,25)和(400,350)绘制。此段由数据属性字符串中的C命令指示。同样,大写字母C表示绝对路径;小写字母c表示相对路径。
第二段以绝对水平“lineto”命令H开始,该命令指定从前一个子路径的端点(400,175)到新端点(280,175)绘制的线。因为它是水平“lineto”命令,所以指定的值是x坐标。
有关完整路径语法,请参阅Data参考和如何: Create a Shape by Using a PathGeometry。
希望这会有所帮助:)
伊恩
答案 1 :(得分:2)
与形状和路径几何相关联的数据属性不会直接进入它,首先只需阅读路径几何的基础知识,然后您就能理解任何形状的数据属性。