WPF XAML 资源样式模板属性存放位置

WPF的XAML 资源申明 类似HTML。

整体来说分3种

1.行类资源样式属性

1.1 行内属性

<Button Content="按钮" Foreground="White" FontSize="30"></Button>

1.2 行内样式 模板(没多大意义)

<Button Content="按钮">
  <Button.Style>
         <Style TargetType="Button">
                    <Setter Property="Foreground" Value="White"></Setter>
                    <Setter Property="FontSize" Value="30"></Setter>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Button">
                                <Grid></Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
          </Style>
  </Button.Style>
  <Button.Template>
           <ControlTemplate TargetType="Button">
                    <Grid></Grid>
           </ControlTemplate>
  </Button.Template>
</Button>

 

2.头部资源样式属性

2.1 头部样式模板 (申明)

<Window.Resources>
        <Style x:Key="xxx" TargetType="Button">
            <Setter Property="Foreground" Value="White"></Setter>
            <Setter Property="FontSize" Value="30"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid></Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <ControlTemplate x:Key="xx" TargetType="Button">
            <Grid></Grid>
        </ControlTemplate>
</Window.Resources>

2.2 头部样式模板 (引用)

<Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</Window.Resources>

  

 

3.全局资源样式属性

App.xaml

    <Application.Resources>
        <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Dictionary.xaml"/> </ResourceDictionary.MergedDictionaries>
<Style x:Key="xxx" TargetType="Button"> <Setter Property="Foreground" Value="White"></Setter> <Setter Property="FontSize" Value="30"></Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid></Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="xx" TargetType="Button"> <Grid></Grid> </ControlTemplate> </ResourceDictionary> </Application.Resources>

 

!!!!!!!!!!!!!!配合资源字典的使用!!!!!!!!!  

 

说明:

1.行类属性尽量少用,只有特殊控件 需要用到行内属性,

   正确的做法是封装统一风格的所有控件。
  (例如按钮,统一高宽,字体,字体大小,然后申明到独立的资源字典中,
    在App.xaml中引用)

2.头部资源引用情况用于 不同 Window 适应不同主题或者风格的情况。

   比如为某一个窗口申明一个当前窗口单独使用的样式。

  (例如播放器的旋转控件,只有一个页面用到,只需要在Window级引用对应资源字典)

   不放在App.xaml原因是为了降低内存消耗。

3.App.xaml 里面的资源引用适用于全局资源。理论上每一个被申明的Window
   都会创建一个对应资源字典的实例。除非是每个Window都会用到的模块,
    不然建议放到对应Window级
  

posted on 2018-02-18 19:33  梦机器  阅读(1016)  评论(0编辑  收藏  举报