指定类的样式

自己定义了一个类ImageLayer,然后想把特定的样式应用到ImageLayer,可以把如下代码加入app

<Style x:Name="ImageLayerStyle" TargetType="layer:ImageLayer">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="layer:ImageLayer">
                <Canvas>
                    <Grid x:Name="RootElement" MinWidth="48">
                        <Grid.RenderTransform>
                            <ScaleTransform x:Name="_ScaleTransform" ScaleX="1" ScaleY="1"/>
                        </Grid.RenderTransform>
                        <Image x:Name="imageName" Stretch="None" Width="48" Height="48" HorizontalAlignment="Center"></Image>
                    </Grid>
                </Canvas>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后在类ImageLayer初始化函数中加入以下代码

this.Style = Application.Current.Resources["ImageLayerStyle"] as Style;

就可以把ImageLayerStyle样式应用到ImageLayer。

同时还可以不指定name,作为默认样式应用,不过会有一点麻烦

需要进行如下设置

在Silverlight Application下建立一个Themes目录, 创建generic.xaml文件(其它文件名称无法实现). 将指定TargetType的Style移动到generic.xaml. 这个概念是沿用WPF创建自定义控件时的技巧(WPF运行时engine会自动查找generic.xaml并将Style应用到控件实例), 在Silverlight中一样可以使用.

如果是想要继承默认样式怎么办呢

1 支持设置全局样式,也就是所有button的style,这个style里可以设置button的公共样式,比如大小拉,颜色啦,字体拉等等。 
2 针对个别的button,可以设置自己的style,但是这个style是基于1中style的 
解决方法: 
1 设置一个全局带key的style, 
<Style x:Key="CustomButton" TargetType="Button"> 
<!--在这里设置全局的style--> 
</Style> 
看到这困惑了把,这个带key的style用到全局,一个一个加key?nono 
2 设置一个不带key的style,并且这个style继承上边的全局style 
<Style TargetType="Button" BaseOn="{CustomButton}"> 
</Style> 
这样,所有的button的style,默认就是来自于CustomButton。 
3 针对特殊的style,设置带key的style,并BaseOn="{CustomButton}" 

转载于:https://www.cnblogs.com/junyuz/archive/2011/04/20/2022610.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值