Как объединить стиль в xaml? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть файл xaml, этот файл, который я хочу использовать в другом файле

<Style TargetType="Button">
        <Setter Property="BorderThickness" Value="5" />
        <Setter Property="Foreground" Value="Black" />
        <Setter Property="BorderBrush" >
</Style>

Например, это мой другой файл:

<ContentPage.Resourse>
        <Style TargetType="Entry">
        <Setter Property="BorderThickness" Value="5" />
// HERE, i also want to use my first file 
</ContentPage.Resourse>

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Согласно вашему описанию, вы хотите объединить стили или наследование стилей, да, вы можете установить свойство Style.BasedOn для существующего стиля. В XAML это достигается путем установки для свойства BasedOn расширения разметки StaticResource, которое ссылается на ранее созданный стиль.

Если вы хотите объединить стиль с одинаковым типом TargetType, вы можете следовать коду Nikhileshwar, но если вы хотите объединить стили, имеющие разные значения, посмотрите:

Стили, которые наследуются от базового стиля, могут включать экземпляры Setter для новых свойств или использовать их для переопределения стилей из базового стиля. Кроме того, стили, которые наследуются от базового стиля, должны предназначаться для того же типа или типа, который наследуется от типа, на который нацелен базовый стиль. Например, если базовый стиль предназначен для экземпляров View, стили, основанные на базовом стиле, могут предназначаться для экземпляров View или типов, производных от класса View, таких как экземпляры Label и Button.

Так что я Предположим, вы можете установить свой первый стиль TargetType как View в App.xaml Application.Resources, например:

<Application.Resources>
    <Style x:Key="buttonstyle" TargetType="View">
        <Setter Property="BackgroundColor" Value="AliceBlue" />
        <Setter Property="HorizontalOptions" Value="FillAndExpand" />
        <Setter Property="VerticalOptions" Value="CenterAndExpand" />
    </Style>
</Application.Resources>

Затем вы можете использовать этот стиль в ресурсе contentpage:

 <ContentPage.Resources>
    <Style
        x:Key="entrystyle"
        BasedOn="{StaticResource buttonstyle}"
        TargetType="Entry">
        <Setter Property="FontSize" Value="20" />
        <Setter Property="TextColor" Value="Red"/>

    </Style>
</ContentPage.Resources>

О программе Наследование стилей в Xamarin.Forms, пожалуйста, посмотрите:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/styles/xaml/inheritance

0 голосов
/ 10 марта 2020

Если вы ищете использование других сеттеров Style в свойстве Style, то BasedOn - это то, что вы ищете.

<Style x:Key="highlightedLabel" TargetType="Label">
    <Setter Property="TextColor" Value="White" />
    <Setter Property="BackgroundColor" Value="LightGreen" />
</Style>
<Style
    x:Key="italicHighlighted"
    BasedOn="{StaticResource highlightedLabel}"
    TargetType="Label">
    <Setter Property="FontSize" Value="30" />
</Style>

Просто добавьте, как вы указано, что вам может потребоваться на разных страницах

Если многоразовое использование Style - то, что вы ищете, то определите Style в App Resources.

App.Xaml

<Application.Resources>
    <Style x:Key="highlightedLabel" TargetType="Label">
        <Setter Property="TextColor" Value="White" />
        <Setter Property="BackgroundColor" Value="LightGreen" />
    </Style>
</Application.Resources>

И использовать его на любой странице. Это доступно по всему приложению.

AnyPage.Xaml

<Label Style="{StaticResource highlightedLabel}" Text="I'm Highlighted" />

Надеюсь, что это поможет вашему требованию. Комментарий к любому запросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...