Как определить ResourceDictionary путем добавления стиля в Xamarin xaml {GroupStyle}

Я пытаюсь сделать что-то вроде установить атрибут для всех меток внутри сетки

Я знаю, как это сделать, просто делаю так:

<Grid RowSpacing="2" Padding="2,0,2,0">
    <Grid.Resources>
       <ResourceDictionary>
            <Style BasedOn="{StaticResource Font-Awesome}" TargetType="Label"/>
       </ResourceDictionary>
    </Grid.Resources>
        <Label Text="31 &#xf083;" Grid.Column="0" TextColor="#2764B5" XAlign="Start"/>

        <Label Text="91 &#xf083;" Grid.Column="1" TextColor="#A0A1A2" XAlign="Center"/>

        <Label Text="12 &#xf083;" Grid.Column="2" TextColor="#A0A1A2" XAlign="End"/>
</Grid>

Но это уродливо и излишне

Я хочу сделать что-то вроде

<Grid RowSpacing="2" Padding="2,0,2,0" Style="{StaticResource grd-actions}">
    <Label Text="31 &#xf083;" Grid.Column="0" TextColor="#2764B5" XAlign="Start"/>

    <Label Text="91 &#xf083;" Grid.Column="1" TextColor="#A0A1A2" XAlign="Center"/>

    <Label Text="Compartilhar &#xf083;" Grid.Column="2" TextColor="#A0A1A2" XAlign="End"/>
</Grid>

А в статических ресурсах приложения есть ResourceDictionary для сетки, что-то вроде:

<Style x:Key="gd-actions" TargetType="Grid">
    <Setter Property="Resources">
      <Setter.Value>
        <ResourceDictionary>
          <Style BasedOn="{StaticResource Font-Awesome}" TargetType="Label"/>
        </ResourceDictionary>
      </Setter.Value>
    </Setter>
</Style>

Я пытаюсь разными способами, но это всегда исключение!

Может кто-нибудь помочь мне здесь?

1 ответ

Решение

Я думаю, что самый чистый способ сделать это с помощью Explicit Styles с Global Resources, Объявите стиль для этого Labels в Application Resources а затем в ярлык просто добавьте Style Property:

Заявка:

<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="xforms_test.App">
    <Application.Resources>
        <ResourceDictionary>
            <Style x:Key="labelAquaStyle" TargetType="Label">
                <Setter Property="HorizontalOptions" Value="Center" />
                <Setter Property="TextColor" Value="Aqua" />
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

И на вашей странице:

<Grid RowSpacing="2" Padding="2,0,2,0">
    <Label Grid.Column="0" Text="These labels" Style="{StaticResource labelAquaStyle}" />
    <Label Grid.Column="1" Text="are demonstrating" Style="{StaticResource labelAquaStyle}" />
    <Label Grid.Column="2" Text="explicit styles" Style="{StaticResource labelAquaStyle}" />
</Grid>
Другие вопросы по тегам