一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

一步一步學Silverlight :使用控件模板

概述

Silverlight 2 Beta 1版本發布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, IronPython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學Silverlight 2系列》文章帶您快速進入Silverlight 2開發。

本文為系列文章第九篇,主要介紹如何使用控件模板定制控件的觀感。Silverlight提供了極其強大的功能,允許用戶完全定制控件的外觀。

定制控件內容

在Silverlight中,WatermarkedTextBox控件可以為用戶的輸入提供一段提示信息,如果只是簡單的一點文字信息,有時候未免顯得單調,如果加上相應的圖片說明效果會更好,如下圖所示的一個簡單的用戶登錄界面:

TerryLee_Silverlight2_0045

這樣看起來界面顯的就生動多了,XAML聲明如下:

<Canvas Background="#46461F">    <WatermarkedTextBox x:Name="UserName" Canvas.Top="30" Canvas.Left="50"                        Width="320" Height="48">        <WatermarkedTextBox.Watermark>            <StackPanel Width="320" Height="48" Orientation="Horizontal">                <Image Source="admin.png" HorizontalAlignment="Left"></Image>                <TextBlock Text="請輸入用戶名" VerticalAlignment="Center" Foreground="#999999"/>            </StackPanel>        </WatermarkedTextBox.Watermark>    </WatermarkedTextBox>    <WatermarkedTextBox x:Name="Password" Canvas.Top="110" Canvas.Left="50"                        Width="320" Height="48" HorizontalAlignment="Left">        <WatermarkedTextBox.Watermark>            <StackPanel Width="320" Height="48" Orientation="Horizontal">                <Image Source="lock.png" HorizontalAlignment="Left"></Image>                <TextBlock Text="請輸入密碼" VerticalAlignment="Center" Foreground="#999999"/>            </StackPanel>        </WatermarkedTextBox.Watermark>    </WatermarkedTextBox>    <Button Canvas.Top="180" Canvas.Left="100"            Width="120" Height="48">        <Button.Content>            <StackPanel Orientation="Horizontal">                <Image Source="apply.png" HorizontalAlignment="Left"></Image>                <TextBlock Text="登 錄" VerticalAlignment="Center" Margin="10 0 0 0"></TextBlock>            </StackPanel>        </Button.Content>    </Button></Canvas>

很多控件都有Content或者Text屬性,我們完全可以充分發揮自己的想象力去進行定制,定制后控件仍然具有原來的功能行為,如上面的示例,當輸入用戶名控件獲得焦點時文字和圖片都將消失:

TerryLee_Silverlight2_0046

使用控件模板定制控件

前面的示例中我們只是定制了控件的內容,Silverlight允許我們完全對控件進行定制,而不僅僅是內容。下面的示例中我們定制一個漸變色的圓角矩形按鈕。首先我們在App.xaml中創建一個RoundButton樣式,改寫按鈕的Template屬性:

<Style x:Key="RoundButton" TargetType="Button">    <Setter Property="Template">        <Setter.Value>            <ControlTemplate TargetType="Button">                <Grid x:Name="RootElement">                    <Rectangle Width="200" Height="80" RadiusX="15" RadiusY="15">                        <Rectangle.Fill>                            <LinearGradientBrush StartPoint="0,0">                                <GradientStop Color="#FFFFFF" Offset="0.0" />                                <GradientStop Color="#EC04FA" Offset="1.0" />                            </LinearGradientBrush>                        </Rectangle.Fill>                        <Rectangle.Stroke>                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">                                <GradientStop Color="#FCB2FD" Offset="0" />                                <GradientStop Color="#FFFFFF" Offset="1" />                            </LinearGradientBrush>                        </Rectangle.Stroke>                    </Rectangle>                    <TextBlock Text="提 交" FontSize="26" Foreground="White"                               HorizontalAlignment="Center" VerticalAlignment="Center"/>                </Grid>            </ControlTemplate>        </Setter.Value>    </Setter></Style>

其中的漸變等內容在Graphics相關內容里將會寫到。現在在XAML中使用該樣式:

<Canvas Background="#46461F">    <Button x:Name="button1" Style="{StaticResource RoundButton}"            Canvas.Top="80" Canvas.Left="150"/></Canvas>

運行后就可以看到下面的效果:

TerryLee_Silverlight2_0047

創建模板

上面的示例中,控件的文字以及控件的大小都是固定的,我們希望在開發人員使用中再設定,可以在控件模板中通過使用 {TemplateBinding ControlProperty} 的標識擴展句法來綁定到控件的屬性來實現,使用ContentPresenter控件可以靈活的設置各個屬性。修改RoundButton樣式如下所示:

<Style x:Key="RoundButton" TargetType="Button">    <Setter Property="Template">        <Setter.Value>            <ControlTemplate TargetType="Button">                <Grid x:Name="RootElement">                    <Rectangle Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"                               RadiusX="15" RadiusY="15">                        <Rectangle.Fill>                            <LinearGradientBrush StartPoint="0,0">                                <GradientStop Color="#FFFFFF" Offset="0.0" />                                <GradientStop Color="#EC04FA" Offset="1.0" />                            </LinearGradientBrush>                        </Rectangle.Fill>                        <Rectangle.Stroke>                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">                                <GradientStop Color="#EC04FA" Offset="0" />                                <GradientStop Color="#FFFFFF" Offset="1" />                            </LinearGradientBrush>                        </Rectangle.Stroke>                    </Rectangle>                    <ContentPresenter                        Content="{TemplateBinding Content}"                        FontSize="{TemplateBinding FontSize}"                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"                        Foreground="{TemplateBinding Foreground}">                    </ContentPresenter>                </Grid>            </ControlTemplate>        </Setter.Value>    </Setter></Style>

這樣在使用RoundButton時我們可以設定控件的文本及控件的大小:

<Canvas Background="#46461F">    <Button x:Name="button1" Style="{StaticResource RoundButton}"            Canvas.Top="80" Canvas.Left="50"            Content="提 交" FontSize="26"            HorizontalContentAlignment="Center"            VerticalContentAlignment="Center"            Foreground="White" Width="200" Height="60"/>    <Button x:Name="button2" Style="{StaticResource RoundButton}"            Canvas.Top="80" Canvas.Left="260"            Content="取 消" FontSize="26"            HorizontalContentAlignment="Center"            VerticalContentAlignment="Center"            Foreground="White" Width="100" Height="100"/></Canvas>

運行時效果如下:

TerryLee_Silverlight2_0048

結束語

本文簡單的介紹了如何定制控件的內容以及通過控件模板完全定制控件,你可以從這里下載本文示例代碼。

NET技術一步一步學Silverlight :使用控件模板,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美激情精品久久久久久大尺度 | 午夜欧美成人久久久久久 | 国产精品路线1路线2路线 | 好吊色妞 | 91在线网站| 亚洲精品tv | 精品亚洲国产国拍 | 成人a区 | 欧美特黄a级高清免费大片 欧美特黄a级高清免费看片 | 午夜视频在线观看国产 | 午夜在线视频免费 | 香蕉碰碰人人a久久动漫精品 | 日韩在线不卡一区在线观看 | 色综合久久九月婷婷色综合 | 隔壁搬来黑人巨大中文字幕 | 国产在线观看91精品 | 欧美日韩视频在线第一区二区三区 | 黄色大片免费看 | 亚洲韩国欧美一区二区三区 | 深爱五月激情五月 | 在线观看国产情趣免费视频 | 国产福利在线观看 极品美女 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片99 | 日韩一区二区三区视频在线观看 | 四房激情网 | 免费一区区三区四区 | 国产成人短视频 | 色综合五月激情综合色一区 | 蕾丝视频成人★在线观看 | 色噜噜狠狠先锋影音久久 | 婷婷激情在线视频 | 五月天色婷婷综合 | 欧美午夜a级精美理论片 | 国产一区二区三区鲁婷婷 | 亚洲热热久久九九精品 | 国产第一亚洲 | 97影院秋霞国产精品 | 一级做a爰片性色毛片武则天五则 | 日韩精品永久免费播放平台 | 中文字幕久久综合伊人 | 午夜久久免费视频 |