windows phone xaml檔案中元素及屬性(10)

來源:互聯網
上載者:User

Textblock xaml檔案和隱藏檔案

在設計介面的時候我們可以通過xaml中進行設計,這種設計是所見即所得 (WYSIWYG)的,很是方便,由於xaml中使用到的元素都是其實質都是類檔案,比如textblock類,textblock在xaml檔案中展示的特性都是該類的屬性及方法;所以我們也可以在隱藏檔案完成對可視化元素的構建,例如我們實現如下的效果:

那麼我們在MainPage.xaml 部分檔案代碼如下:

 <!--ContentPanel - 在此處放置其他內容-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <TextBlock x:Name="txtName" Text="Name" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>
        </Grid>

同樣的效果我們可以在MainPage隱藏檔案進行編寫如下:

//PhoneApplicationPage載入時        private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)        {            //和xaml中顯示的位置相同            TextBlock txtblk = new TextBlock();            txtblk.Name = "txtName";            txtblk.Text = "Name";            txtblk.VerticalAlignment = VerticalAlignment.Center;            txtblk.HorizontalAlignment = HorizontalAlignment.Center;            ContentPanel.Children.Add(txtblk);                    }

此事件需要在xaml檔案PhoneApplicationPage類中添加loaded事件,此外我們還會發現我們利用了名為ContentPanel的Grid元素的Children屬性將textblock加入到Grid內部,其實Grid是將textblock添加到自身的Children集合中;

屬性的繼承性

屬性的繼承是silverlight的一個特性,它可以將PhoneAppplicationPage中的一些屬性(大致就是Forground屬性,以及和字型相關的 屬性,如FontFamily,Fronsize,FronStyle,FrontWeight,fronStretch)繼承到 MainPage中,在下面的案例中使用的是在PhoneAppplicationPage中設定屬性

FontStyle="Italic"

 我們會看到這樣的效果:

 我們可以看到,在MainPage中的所有字型都變為斜體字,下面在顯示為“Name”的textblock元素改為:

<TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>

 再看效果變為如下:

 

 所以從中可以總結屬性的優先順序:①本地設定的優先順序最高;②繼承來的屬性優先順序置中;③預設的最低

屬性元素文法

元素及其屬性的不同書寫方式,比如上面我們實現顯示"Name"的textblock元素,在xaml中可以有一下不同的幾種書寫格式:

最原始的寫法①:

<TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>

寫法②:

            <TextBlock>
                <TextBlock.Name>txtName</TextBlock.Name>
                <TextBlock.Text>Name</TextBlock.Text>
                <TextBlock.FontStyle>Normal</TextBlock.FontStyle>
                <TextBlock.VerticalAlignment>Center</TextBlock.VerticalAlignment>
                <TextBlock.HorizontalAlignment>Center</TextBlock.HorizontalAlignment>
            </TextBlock>

 兩種寫法實現的效果一直,可以看出寫法②更有層次感,但是這樣寫法比較累贅,適當的時候可以採用第二種寫法;其中第二種寫法中的Name,Text,FontStyle,VerticalAlignment,HorizontalAlignmen稱之為屬性元素,即用xml元素表示一個.NET屬性,另外需要注意的是屬性元素標籤內不能含有其他任何東西;

顏色和畫刷

我們把名為txtName的元素添加屬性Foreground更改為

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" 
          VerticalAlignment="Center" HorizontalAlignment="Center" 
                   Foreground="#FF0000"
                   ></TextBlock>

 可以看到效果:這裡使用的是紅綠藍的字串表示的顏色,每種顏色值都是範圍從00到FF佔用一個位元組的16進位數,其中00表示全透明,FF表示不透明;對於scRGB色彩空間,其值設定在0到1之間,我們可以這樣定義

<TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" 
          VerticalAlignment="Center" HorizontalAlignment="Center" 
                   Foreground="sc#0.1,0.2,0.3"
                   ></TextBlock>

 效果:,關於sRGB和scRGB的區別可參考http://www.sudu.cn/info/index.php?op=article&id=275494

 按照上面的屬性元素文法我們可以這樣寫:

            <TextBlock>
                <TextBlock.Name>txtName</TextBlock.Name>
                <TextBlock.Text>Name</TextBlock.Text>
                <TextBlock.FontStyle>Normal</TextBlock.FontStyle>
                <TextBlock.VerticalAlignment>Center</TextBlock.VerticalAlignment>
                <TextBlock.HorizontalAlignment>Center</TextBlock.HorizontalAlignment>
                <TextBlock.Foreground>
                    <SolidColorBrush>
                        <Color>sc#0.1,0.2,0.3</Color>
                    </SolidColorBrush>
                </TextBlock.Foreground>
            </TextBlock>

 另外Foreground屬性是可以通過視覺化樹狀結構繼承,但是Background屬性不可繼承的,Background屬性預設為null,null與Background屬性設定為透明Transparent相同;

源碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.