[英]how to set Data property for button style in wpf?
在此示例屬性中:
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>
數據是模板中Path對象的屬性...
http://msdn.microsoft.com/en-us/library/ms745814.aspx
編輯:
在msdn doco中:數據屬性字符串以M指示的“ moveto”命令開頭,該命令為Canvas坐標系中的路徑建立起點。 路徑數據參數區分大小寫。 大寫字母M表示新當前點的絕對位置。 小寫的m表示相對坐標。 第一段是三次貝塞爾曲線,開始於(100,200),結束於(400,175),使用兩個控制點(100,25)和(400,350)繪制。 此段由Data屬性字符串中的C命令指示。 同樣,大寫字母C表示絕對路徑; 小寫字母c表示相對路徑。
第二段以絕對水平“ lineto”命令H開頭,該命令指定從先前子路徑的端點(400,175)到新端點(280,175)繪制的線。 因為它是水平的“ lineto”命令,所以指定的值是x坐標。
有關完整的路徑語法,請參見數據參考和如何:使用PathGeometry創建形狀 。
希望這可以幫助 :)
伊恩
與形狀和路徑幾何相關聯的數據屬性不會直接進入其中,首先只需閱讀路徑幾何的基礎知識,然后您就可以了解任何形狀的數據屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.