WPF 樣式(Style)(2)


     我的WPF很弱,很多時候寫的是一塌糊塗的,在這里感謝nonocastTommyJoans給予的幫助。謝謝你們在工作中給予的指導和幫助,讓我少走很多彎路。

     已經很久不用WPF編程了,正好最近的項目要用到它,所以要把遺忘的WPF重新學習一下了。翻出之前寫的blog,WPF樣式(style),寫的很簡單,就把之前寫的那篇叫WPF樣式(style)(1)啦,現在這篇為WPF樣式(style)(2)吧。

    Style是屬性設置的集合。可以給同一種類的不同實例設置相同的Style。前提是這個類必須是派生自 FrameworkElement 或 FrameworkContentElement 。

    Style通常在 Resources 節內部聲明為資源。

       1. Style的有效范圍

        1.1 如果在Application.Resources中聲明Style,則它的有效范圍是整個程序              

   View Code
<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/Style.xaml" />
                <ResourceDictionary Source="Themes/Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

        1.2 如果在Window.Resources中聲明Style,則它的有效范圍是當前窗體

   View Code
<Window.Resources>
            <Style TargetType="Button">
                <Setter Property="Width" Value="75"></Setter>
                <Setter Property="Height" Value="85"></Setter>
                <EventSetter Event="Click" Handler="Button_Click"></EventSetter>
            </Style>
  </Window.Resources>

        1.3 如果在其他控件(例如Grid)的Resources中聲明Style,則它的有效范圍就是這個控件    

   View Code
<Grid.Resources>
            <Style TargetType="Button">
                <Setter Property="Width" Value="75"></Setter>
                <Setter Property="Height" Value="85"></Setter>
                <EventSetter Event="Click" Handler="Button_Click"></EventSetter>
            </Style>
  </Grid.Resources>

   注:

Style中如果只寫了TargetType="Button",沒有寫x:Key,則Style有效范圍內的Button的Style默認都是這個Style。
Style中如果寫x:Key=“buttonStyle1”了,則引用此Style的方法為Style="{StaticResource buttonStyle1}" 

 

 2. Style可以用BaseOn來“繼承”另一個Style   

   View Code
  <Window.Resources>
  <Style TargetType="Button"  x:Key="buttonstyle1">
                <Setter Property="Height" Value="60"></Setter>
                <Setter Property="Width" Value="60"></Setter>
     </Style>
<Style TargetType="Button" BasedOn="{StaticResource ResourceKey=buttonstyle1}"/>
</Window.Resources>

 3.  TargetType

     如果沒有給Style指定TargetType,則在寫Style時,必須給每個屬性添加類型,這樣不同的類型可以共用同一個Style:    

View Code
<Style x:Key="Style1">
            <Setter Property="Button.Width" Value="80"></Setter>
            <Setter Property="Button.Height" Value="80"></Setter>
            <Setter Property="TextBlock.Text" Value="HelloWorld"></Setter>            
        </Style>

  注:將Style1同時指定給Button和TextBlock,Button會自動忽略不適用它們的屬性Text。而二者公有的屬性Height,Width,對二者都有效。

 4. C# 代碼中引用Style

    tblock.Style = (Style)FindResource("Style1");

 5. 可以在Style中綁定事件,例如:

      <Style TargetType="Button">
                <EventSetter Event="Click" Handler="Button_Click"></EventSetter>
      </Style>

 6. Triggers 放到下一篇再講

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM