2014-01-07 23 views
0

我在找一个自定义的WPF按钮的例子。 理想情况下采用Blend/VS2013配置,即VS2013测试解决方案,该解决方案包含一个可在Blend中为VS2013编辑的按钮项目。 按钮应该有一个视觉外观,使得它清楚它是在什么状态,即丰富的可视化行为WPF按钮的任何例子?

  • 普通=默认
  • 鼠标悬停=内发光
  • 按下=更小的尺寸/小阴影
  • ToggledOn =外发光
  • 残疾人=变灰

鉴于这样的示例中,我可以然后只是调整视觉使用Blend显示状态。

而在应用程序方面,我只想实例化按钮,关联样式,并为BackgroundColor,图像/图标,文本标签,宽度,高度设置属性。

我认为使用ControlTemplate风格是推荐的方式,而不是子分类,请参阅MSDN

的三个关键问题似乎是:

  • 如何设置VS2013 /混合项目结构使用这两种交替一套单一的源文件的
  • 如何计算在ControlTemplate中的相对大小,即什么是语法 Width = Button.Width x 1.1设置辉光扩展相对于不在模板中的实际按钮尺寸,但要在客户端应用程序UI设计上定义。
  • 如何计算从按钮,即基色什么是渐变停止颜色= Button.BackgroundColor×80%+白色的WPF XAML语法×20%相对颜色

这应该是一个非常普遍的需求,但谷歌没有帮助找到类似上述的东西。

任何帮助与三个关键问题中的任何一个将不胜感激。

回答

0

你的要求并不需要定义一个新的ControlTemplate,可以用一个TriggersStyle来实现,如:

<Grid> 
    <Grid.Resources> 
     <Style TargetType="Button"> 
      <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/> 
      <Style.Triggers> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter Property="RenderTransform"> 
         <Setter.Value> 
          <ScaleTransform ScaleX="0.75" ScaleY="0.75"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 
    <Button Content="Click Me!" /> 
</Grid> 
  • 如果你App.xaml中定义的Style可以访问应用程序中的任何地方资源并给出x:Key
  • 使用ScaleTransform的ScaleX和ScaleY是相对值。
  • 您将需要自己的IValueConverter,然后使用转换器将目标颜色绑定到源颜色。