【问题标题】:how to set Data property for button style in wpf?如何在 wpf 中设置按钮样式的数据属性?
【发布时间】:2010-11-28 08:44:57
【问题描述】:

在此示例属性中:

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>

【问题讨论】:

    标签: c# wpf wpf-controls styles


    【解决方案1】:

    数据是模板中路径对象的属性...

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

    编辑:

    来自 msdn 文档: 数据属性字符串以“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

    希望这会有所帮助:)

    伊恩

    【讨论】:

    • this msdn help for path geometry..我想知道数据属性中的这5个参数
    【解决方案2】:

    与形状和路径几何相关的数据属性不要直接进入它,首先只需阅读路径几何的基础知识,然后您将能够理解任何形状的数据属性..

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2011-03-22
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多