XamarinForms 系列課程

特別說明

2017/01/17

Xamarin FAQ 1-16 : 如何在 XAML 中,使用與存取靜態資源

問題

當我們在進行宣告 XAML 個控制項標記屬性的時候,希望能夠擁有 CSS 這樣特性的功能,也就是可以把許多共同屬性的設定值,例如,顏色設定,集中定義在某個地方,這樣,就可以在 XAML 內的各個控制項參考這個顏色宣告。如此,當要變更這些參考到的控制項的顏色,就可以直接修改這個宣告顏色的地方進行修改,但是,要怎麼做到這樣的功能呢?

解答

要了要簡化與集中管理 XAML 中各控制項的屬性設定,您可以在 ContentPage 內的 Resources 屬性內,定義 ResourceDictionary,在 ResourceDictionary裡面,您可以透過 XAML 標記來宣告產生一些物件,讓整個頁面可以相關控制項與版面控制可以參考這個物件。
在底下的範例中,我們在 ResourceDictionary 內,宣告了一個 lSize 的物件,它的型態為 x:Double (也就是 .NET 裡面的 double 型別),並且設定其值為 30。另外,宣告另外一個物件為 lTest,它的型態為 x:String ,設定這個物件的值為 "我是 Xamarin.Forms"。
所以,只要在宣告 ResourceDictionary 節點之下的任何子節點,都可透過 StaticResource 這個延伸標記宣告方法,參考之前宣告的物件;例如,當要指定 Label 控制項的 FontSize 這個屬性值,就可以使用 {StaticResource lSize}這樣的用法,指定這個 Label 控制項的 FontSize 屬性值為 30。
<ContentPage.Resources>
    <ResourceDictionary>
      <x:Double x:Key="lSize">30</x:Double>
      <x:String x:Key="lText">我是 Xamarin.Forms</x:String>
    </ResourceDictionary>
  </ContentPage.Resources>
  <ContentPage.Content>
    <Grid>
      <Label Text="{StaticResource lText}"
             Grid.Row="0" Grid.Column="0"
             FontSize="{StaticResource lSize}"
             VerticalOptions="Center"
             HorizontalOptions="Center" />
    </Grid>
  </ContentPage.Content>

沒有留言:

張貼留言