問題
當您想要使用 .NET 的靜態屬性,來集中管理 XAML 中會參考到的物件,那麼,在 XAML 中,是要如何參考這個 .NET 中的靜態屬性值呢?
解答
- 首先,您需要在 .NET 中,定義一個靜態類別,和裡面的靜態屬性。
- 在 XAML 裡面,為了要能夠參考到這個 .NET 中的靜態屬性,您需要宣告一個新的命名空間 ( namespace )。在底下的範例中,使用了 xmlns 這個關鍵字,宣告了一個新的命名空間
xmlns:local="clr-namespace:App1"
叫做 local。當您要參考這個新的命名空間內了某個靜態屬性,例如,Label
這個控制項的Font
這個屬性,它的字體大小值需要參考到 .NET 靜態屬性AppConstants.TitleFont
,這個時候,您可以使用x:Static
這個延伸擴充標記來參考其他物件屬性。Font="{x:Static local:AppConstants.TitleFont}"
在這個範例中,使用了x:Static
配合了指定AppConstants.TitleFont
屬性值,是定義在local
命名空間。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:App1"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
x:Class="App1.MainPage">
<Label Text="Hello, XAML!"
VerticalOptions="{x:Static LayoutOptions.Start}"
HorizontalTextAlignment="{x:Static TextAlignment.Center}"
TextColor="{x:Static Color.Aqua}"
BackgroundColor="{x:Static local:AppConstants.ForegroundColor}"
Font="{x:Static local:AppConstants.TitleFont}"
/>
</ContentPage>