WPF 三角形按钮:XamlReader 支持的 Style Xaml

需要在 C# Winform 自动创建一个 wpf 按钮,是通过 XamlReader Style 的,但网上的例子大多数都是 X:clsss 型,我调试了一个,支持用 XamlReader,button 是三角型的,按下变色,松开复原:

using System.Windows.Markup;

在 Winform 中拉入一个 ElementHost,命名为:elementHost1,在它上面创建一个三角形 Button。

static string Sstyle=

@"<Style TargetType='Button' xmlns = 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
        <Setter Property='Width' Value='100'/>
        <Setter Property='Height' Value='100'/>
        <Setter Property='Foreground' Value='White'/>
        <Setter Property='Template'>
            <Setter.Value>
                <ControlTemplate TargetType='Button'>
                <Grid>
                    <Polygon Name='GelBackground' Fill='LightSeaGreen'
                        Points='0,0 2,0 1,2' Stroke='Black' StrokeThickness='2'
                        SnapsToDevicePixels='True' Stretch='Uniform'/>
                </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property='IsMouseOver' Value='True'>
                            <Setter Property='Polygon.Fill' TargetName='GelBackground'>
                                <Setter.Value>
                                    <RadialGradientBrush>
                                          <GradientStop Offset='0' Color='Lime'></GradientStop>
                                      <GradientStop Offset='1' Color='DarkGreen'></GradientStop>
                                    </RadialGradientBrush>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                         <Trigger Property='IsPressed' Value='True'>
                            <Setter Property='Polygon.Fill' TargetName='GelBackground'>
                                <Setter.Value>
                                    <RadialGradientBrush>
                                          <GradientStop Offset='0' Color='#ffcc34'></GradientStop>
                                      <GradientStop Offset='1' Color='#cc9900'></GradientStop>
                                    </RadialGradientBrush>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>"
private System.Windows.Controls.Button CreateWPFButton(ElementHost elementHost, string sStyle, string sName, string sContent)
        {
            var CreateButton = new System.Windows.Controls.Button();
            CreateButton.Style = GetStyle(sStyle);
            CreateButton.Content = sContent;
            CreateButton.Name = sName;
            elementHost.Child = CreateButton;

            CreateButton.TouchDown += CreateButton_TouchDown;
            CreateButton.PreviewMouseDown += CreateButton_PreviewMouseDown;

            CreateButton.TouchUp += CreateButton_TouchUp;
            CreateButton.TouchLeave += CreateButton_TouchLeave;

            CreateButton.PreviewMouseUp += CreateButton_PreviewMouseUp;

            return CreateButton;
        }
private Style GetStyle(string sStyle)
        {
            return XamlReader.Parse(sStyle) as Style;
        }
System.Windows.Controls.Button btn = CreateWPFButton(elementHost1,Sstyle, "sName","sContent");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值