我可以在Xamarin.Forms页面上使用默认样式的标签吗?

时间:2018-10-04 02:13:59

标签: xamarin xamarin.forms

在我插入到应用程序另一页中的Xaml代码中,我有以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<Grid xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:template="clr-namespace:Japanese.Templates" 
      x:Class="Japanese.Views.Phrases.Xaml.PhraseQuizInfo" 
      VerticalOptions="FillAndExpand" Padding="20,0,20,0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="33*" />
        <ColumnDefinition Width="33*" />
        <ColumnDefinition Width="33*" />
    </Grid.ColumnDefinitions>
    <Label Grid.Column="0" Text="{Binding Deck}" Style="{StaticResource StatusLabel}" />
    <Label Grid.Column="1" Text="{Binding Cards}" Style="{StaticResource StatusLabel}" />
    <Label Grid.Column="2" Text="{Binding Timer}" Style="{StaticResource StatusLabel}" />
</Grid>

是否可以使用称为StatusLabel的StaticResource指定网格内的所有标签,而不必将其添加到每个标签中?

1 个答案:

答案 0 :(得分:2)

有显式或隐式全局样式。

当前您正在使用显式样式,因为您正在为其定义一个键并通过其Style参数在每个Label上分配它们。

<Style x:Key="StatusLabel" TargetType="Label">
   ~~~
</Style>

您可以定义一个隐式样式,因此所有标签都将接收该样式,只是不为其定义键,并且不手动分配Style参数

<Style TargetType="Label">
   ~~~
</Style>

然后您可以通过显式的样式覆盖各个隐式标签的样式。

因此,如果您的大多数Label是“ StatusLabel”样式,则将其定义为隐式样式,并在需要时将其覆盖。

回复:Creating a Global Style in XAML

注意:您还可以在页面级别和控件级别定义样式,因此通过样式继承可以在需要时调整各个样式属性。

回复:Style Inheritance