天天看點

Silverlight中樣式使用方式

本來不打算寫這篇博,其實關于Silverlight中樣式很簡單但 又感覺這裡面東西雖少但很瑣碎,要用到地方還需要在回頭看.

Silverlight中通過使用樣式來控制控件感官效果,本質上和HTML元素定義樣式有些類似. 如果進行分類的話可以分成:

A:内置樣式

B:全局樣式

其實在Silverlight對樣式控制這塊沒有具體的分什麼内置和全局,主要是為了區分樣式的使用方式 才這麼叫友善使用者的了解

所謂的内置就是對單個XAML中元素直接在标簽中定義樣式屬性,内置樣式缺點在于它不可重用,額外的代碼使的XAML檔案頁面代碼容易和主題業務代碼混合,照成一定混亂,不推薦使用這種方式.

--内置樣式  

 <Button Content="測試Button" Canvas.Left="30" Canvas.Top="120" Height="25"   

            Foreground="Black" 

            Background="Azure" 

            FontSize="14" 

            >  

            </Button>  

  //從上面可以看出直接在标簽中定義 

全局正好解決這個問題,可以使定義的樣式重用,而且是XAML檔案頁面代碼更加簡潔,隻需使用者專注于業務

--在App.xaml檔案中<ApplicationResource>節點中定義共用樣式  

--定義樣式标簽<Style>    

   <Application.Resources>  

        <!--add the Application Resources-->  

        <!--Define the CSS Style About WebControllers-->  

        <Style x:Key="firstSty" TargetType="Button">  

            <Setter Property="FontSize" Value="15"></Setter>  

            <Setter Property="FontFamily" Value="微軟雅黑"></Setter>  

            <Setter Property="Foreground" Value="Red"></Setter>  

            <Setter Property="Background" Value="Silver"></Setter>  

        </Style>  

        <Style x:Key="secondSty" TargetType="Button">  

            <Setter Property="Foreground" Value="Black"></Setter>  

            <Setter Property="Background" Value="blue"></Setter>  

    </Application.Resources>  

--<Style>标簽中X:key主要用來唯一表示樣式  TargetType:指定樣式作用的目标控件是什麼類型  

--子節點<Setter> 通過Property和Value來設定具體的樣式屬性和值  

在XAML頁面中引用:

<!--測試定義在App.xaml檔案中樣式定義-->  

            <Button Content="firsttext" Canvas.Left="30" Canvas.Top="120" Height="25"   

             Foreground="Black" 

             Background="Azure" 

             FontSize="14" 

             Style="{StaticResource firstSty}" 

   --通過标簽中Style屬性StaticResource标記句法來指定具體的樣式 

注意問題:樣式定義沖突

--這是在App.XAML中定義的樣式  

<Application.Resources>  

 </Application.Resources>  

--XAML頁面中引用  

<Button Content="firsttext" Canvas.Left="30" Canvas.Top="120" Height="25"   

            Style="{StaticResource firstSty}" 

//在頁面引用中有再次定義了BackGround和FontSize屬性,這時标簽會從就近原則來樣式,就是以先取标簽内的屬性為主,然  

//後在來檢視Style中的對外引用  

那麼這樣BackGround顯示為Azure 而非App.XAML中定義的Silver(銀灰色) 

本文轉自chenkaiunion 51CTO部落格,原文連結:http://blog.51cto.com/chenkai/765428

繼續閱讀