Silverlight中的自定义按钮

| 如何在Silverlight中创建这样的按钮。我是否需要为此混合表情。 由于我需要在应用程序的许多地方使用修改后的按钮,因此我应该作为用户控件来使用它吗?     
已邀请:
        您不需要
UserControl
,只需一个自定义
Button
模板作为样式资源,然后就可以通过在任何
Button
实例上设置样式来重用它。 尽管无需Blend即可实现,但我强烈建议您至少试用一下,它是用于设计/视觉开发的非常好的IDE! 编辑:作为一个小礼物,这里是一个起点:)
<Style x:Key=\"ButtonStyle1\" TargetType=\"Button\">
    <Setter Property=\"Foreground\" Value=\"#FFFFFFFF\"/>
    <Setter Property=\"Padding\" Value=\"3\"/>
    <Setter Property=\"BorderThickness\" Value=\"1\"/>
    <Setter Property=\"BorderBrush\" Value=\"#FF000000\"/>
    <Setter Property=\"Template\">
         <Setter.Value>
              <ControlTemplate TargetType=\"Button\">
                    <Grid>
                          <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name=\"CommonStates\">
                                      <VisualState x:Name=\"Normal\"/>
                                      <VisualState x:Name=\"MouseOver\"/>
                                      <VisualState x:Name=\"Pressed\"/>
                                      <VisualState x:Name=\"Disabled\">
                                           <Storyboard>
                                                <DoubleAnimation Duration=\"0\" To=\"0.4\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"DisabledVisualElement\"/>
                                           </Storyboard>
                                      </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name=\"FocusStates\">
                                        <VisualState x:Name=\"Focused\">
                                                <Storyboard>
                                                    <DoubleAnimation Duration=\"0\" To=\"1\" Storyboard.TargetProperty=\"Opacity\" Storyboard.TargetName=\"FocusVisualElement\"/>
                                                </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name=\"Unfocused\"/>
                                </VisualStateGroup>
                          </VisualStateManager.VisualStateGroups>
                          <Border x:Name=\"Background\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\">
                                  <Border.Background>
                                      <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">
                                          <GradientStop Color=\"#FF707070\" Offset=\"0\"/>
                                          <GradientStop Color=\"#FF666666\" Offset=\"0.49\"/>
                                          <GradientStop Color=\"#FF5e5e5e\" Offset=\"0.51\"/>
                                          <GradientStop Color=\"#FF535353\" Offset=\"1\"/>
                                      </LinearGradientBrush>
                                  </Border.Background>
                          </Border>
                          <ContentPresenter x:Name=\"contentPresenter\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Content=\"{TemplateBinding Content}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\">
                                <ContentPresenter.Effect>
                                      <DropShadowEffect BlurRadius=\"3\" ShadowDepth=\"2\" Opacity=\"0.5\"/>
                                </ContentPresenter.Effect>
                          </ContentPresenter>
                          <Rectangle x:Name=\"DisabledVisualElement\" Fill=\"#FFFFFFFF\" IsHitTestVisible=\"false\" Opacity=\"0\"/>
                          <Rectangle x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" Margin=\"1\" Opacity=\"0\" Stroke=\"#FF6DBDD1\" StrokeThickness=\"1\"/>
                    </Grid>
              </ControlTemplate>
         </Setter.Value>
    </Setter>
</Style>
    
        您可以不用手工进行混合,但是相信我,使用混合将为您提供更多的功能,并且如果您决定自己完成所有操作,那么您将在短时间内获得更多惊人的结果。     
        我绝对建议您使用Blend,因为它可以节省样式设置控件和创建模板的时间。 但是,如果您不希望按钮与图像完全相同,则可以使用几个主题(例如JetPack),您可以从中借用模板并在XAML中相对容易地修改颜色。     

要回复问题请先登录注册