zoukankan      html  css  js  c++  java
  • Silverlight实用窍门系列:71.Silverlight的Style

      此文章实例基于Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary,如有数据源疑问请参考该文章。

      在Silverlight中的Style相当于Html中的Css,是其一个重要的组成部分。它可以声明于UserControl.Resources也就是本页面资源内或者控件资源内,也可以声明于App.Xaml内或者ResourceDictionary字典资源内。

      Style分为内联样式(控件本身样式)、页内级别样式(本身UserControl.Resources内样式)、应用程序域级别样式(App.Xaml内样式)、ResourceDictionary字典资源

      Style的作用顺序是就近原则,比如一个控件先使用自身样式,然后在本页面内的资源寻找具有指定Key的样式,如果找到就使用此样式,没有就找App.Xaml内样式,再没有就取ResourceDictionary字典资源内寻找。

      A.其声明为 <Style TargetType="ListBox" x:Key="listBox" BasedOn="{StaticResource fontColor}"></Style>

        TargetType:针对什么控件

        x:Key:此样式的样式名称Key,对于不需要x:Key指定的隐式样式,我们将会在下节讲述。

        BasedOn:继承于什么样式,注意继承的样式需要以BasedOn="{StaticResource fontColor}"指定上级Style的Key

      B.样式内部项以<Setter></Setter>标签声明,如<Setter Property="FontSize" Value="15"></Setter>

        Property:作用于什么属性

        Value:设置的值是什么?

        同样其也可以用以下方式申明Setter值,在这里把整个DataTemplate模板作为一个Setter的Value,然后设置针对属性值为ListBox的ItemTemplate属性。

     <Setter Property="ItemTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical" >
                                <StackPanel Orientation="Horizontal" Margin="5" Width="380">
                                    <TextBlock Text="{Binding ArtName}" Margin="5 10 0 0"></TextBlock>
                                    <TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox>
                                    <TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox>
                                    <TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal"  Visibility="Collapsed">
                                    <TextBox Text="{Binding ArtContent}" Width="280"></TextBox>
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>

      最后贴出针对ListBox设置的样式继承于某fontColor样式,代码如下:

        <Application.Resources>
            <Style TargetType="ListBox" x:Key="fontColor">
                <Setter Property="Foreground" Value="Red"></Setter>
            </Style>
            <Style TargetType="ListBox" x:Key="listBox" BasedOn="{StaticResource fontColor}">
                <Setter Property="FontSize" Value="15"></Setter>
                <Setter Property="FontFamily" Value="Georgia"></Setter>
                <Setter Property="ItemTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical" >
                                <StackPanel Orientation="Horizontal" Margin="5" Width="380">
                                    <TextBlock Text="{Binding ArtName}" Margin="5 10 0 0"></TextBlock>
                                    <TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox>
                                    <TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox>
                                    <TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal"  Visibility="Collapsed">
                                    <TextBox Text="{Binding ArtContent}" Width="280"></TextBox>
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Application.Resources>

      在看实例中使用样式如下代码:

        <UserControl.Resources>
            <local:ArtList x:Key="SourceList"></local:ArtList>
        </UserControl.Resources>
        <Grid x:Name="LayoutRoot" Background="White"  DataContext="{StaticResource SourceList}">
            <ListBox x:Name="lbRes" ItemsSource="{Binding ArticleList}"  Style="{StaticResource listBox}"
                     Margin="0 50 0 0 "
                     HorizontalAlignment="Left" VerticalAlignment="Top"
                      Height="400"  >
            </ListBox>
        </Grid>

      实现效果如下图,可以看到该ListBox实现了Style中的模板样式和字体大小等,另外还继承了fontColor样式中的字体颜色,如需源码请点击 SLStyle.zip 下载。

  • 相关阅读:
    JavaScript String常用方法和属性
    JavaScript null 和 undefined
    document.write()
    MyBatis中的@MapKey注解
    Zookeeper实现分布式锁
    zookeeper相关
    二阶段提交和三阶段提交
    代理模式
    模板方法模式
    策略模式
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2558112.html
Copyright © 2011-2022 走看看