windows phone (13) 樣式繼承

來源:互聯網
上載者:User

 在上一遍文章中已經介紹到可以在Resources集合中定義樣式,我們也可以在一個樣式上引用其他的樣式,這就是繼承的概念,使用方法是將引用的樣式放置在Style中的BaseOn屬性;這裡使用到的是xaml標記延伸進行設定,比如這裡定義的三個樣式:

 <phone:PhoneApplicationPage.Resources>        <Style x:Key="tbStyle" TargetType="TextBlock">            <Setter Property="HorizontalAlignment" Value="Center"></Setter>            <Setter Property="HorizontalAlignment" Value="Center"></Setter>            <Setter Property="Foreground">                <Setter.Value>                    <LinearGradientBrush>                        <GradientStop Offset="0.2" Color="Brown"></GradientStop>                        <GradientStop Offset="0.7" Color="DarkBlue"></GradientStop>                    </LinearGradientBrush>                </Setter.Value>            </Setter>        </Style>        <Style x:Key="fStyle" TargetType="TextBlock">            <Setter Property="VerticalAlignment" Value="Bottom"></Setter>        </Style>        <Style x:Key="tStyle" TargetType="TextBlock" BasedOn="{StaticResource tbStyle}">            <Setter Property="VerticalAlignment" Value="Top"></Setter>        </Style>    </phone:PhoneApplicationPage.Resources>

 從上面代碼中我們可以看到第三個樣式繼承了第一個樣式,然後第一個樣式中我們定義的垂直方向的位置,第三個也定義了垂直方向的位置,然後我們從textblock中使用第三個樣式

 <TextBlock x:Name="tbContent" Text="顯示樣式"  Style="{StaticResource tStyle}"  />

效果如下:

 

這說明第三個樣式中的屬性覆蓋了第一個樣式中的相同的屬性 ;需要注意的是,上面三個樣式是有先後順序的,即下面的可以繼承上面的,但是上面的不能繼承下面的,系統會提示警告,找不到你要繼承的樣式;那麼如果這三個樣式中的樣式進行級聯繼承會出現什麼情況那:代碼如下:

 

<phone:PhoneApplicationPage.Resources>        <Style x:Key="tbStyle" TargetType="TextBlock">            <Setter Property="HorizontalAlignment" Value="Center"></Setter>            <Setter Property="HorizontalAlignment" Value="Center"></Setter>            <Setter Property="Foreground">                <Setter.Value>                    <LinearGradientBrush>                        <GradientStop Offset="0.2" Color="Brown"></GradientStop>                        <GradientStop Offset="0.7" Color="DarkBlue"></GradientStop>                    </LinearGradientBrush>                </Setter.Value>            </Setter>        </Style>        <Style x:Key="tStyle" TargetType="TextBlock" BasedOn="{StaticResource tbStyle}">            <Setter Property="VerticalAlignment" Value="Top"></Setter>            <Setter Property="HorizontalAlignment" Value="Left"></Setter>        </Style>        <Style x:Key="fStyle" TargetType="TextBlock" BasedOn="{StaticResource tStyle}">            <Setter Property="VerticalAlignment" Value="Bottom"></Setter>        </Style>           </phone:PhoneApplicationPage.Resources>

然後textblock使用第三個樣式

 <TextBlock x:Name="tbContent" Text="顯示樣式"  Style="{StaticResource fStyle}"  />

效果就是這樣子了

 

 所以我們可以這樣總結,定義三個或更多個樣式,如A,B,C 如果B繼承A,C繼承B,那麼優先順序是C>B>A,也可以這麼說樣式的繼承是越往上優先順序越低;

 給大家貼兩篇文章的連結,共勉:

 

WP7開發學習(4):Style樣式的四種使用----在wp中對樣式的總結

 

WPF中的依賴項屬性----依賴項屬性終於明白了

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.