Формы Xamarin преобразуют Xaml в общий стиль ресурсов Yummy PancakeView

#xaml #xamarin.forms

#xaml #xamarin.forms

Вопрос:

Я пытаюсь преобразовать свои свойства элемента управления pancake в стиль, чтобы все мои элементы управления pancake имели одинаковый стиль. Вот как выглядит мой XAML.

     <yummy:PancakeView x:Name="pvMEssage" BackgroundColor="{DynamicResource ExceptionBackground}" CornerRadius="0,0,20,20" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
                       Padding="0,0,0,0" Margin="0,0,0,0">
        <yummy:PancakeView.BackgroundGradientStops StartPoint="0,0" EndPoint="0,0">
            <yummy:GradientStop Offset="0.1" Color="{DynamicResource ExceptionBackground}" />
        </yummy:PancakeView.BackgroundGradientStops>
        <yummy:PancakeView.Border>
            <yummy:Border Color="White" Thickness="2" />
        </yummy:PancakeView.Border>
 

Я знаю, как использовать setter.value в стиле, но я не могу понять, как поместить backgroundgradientstops в стиль.

У меня это пока:

             <Style x:Key="PancakeViewTop" TargetType="yummy:PancakeView">
            <Setter Property="CornerRadius" Value="20,20,0,0" />
            <Setter Property="HorizontalOptions" Value="FillAndExpand" />
            <Setter Property="VerticalOptions" Value="FillAndExpand" />
            <Setter Property="Padding" Value="0,0,0,0" />
            <Setter Property="Margin" Value="0,0,0,0" />
            <Setter Property="BackgroundGradientStartPoint" Value="0,0" />
            <Setter Property="BackgroundGradientEndPoint" Value="0,0" />
            <Setter Property="BackgroundGradientStops">
                <Setter.Value>
                    <yummy:GradientStop Offset="0.1" Color="{DynamicResource ExceptionBackground}" />
                </Setter.Value>
            </Setter>
            <Setter Property="Border">
                <Setter.Value>
                    <yummy:Border Color="White" Thickness="2" />
                </Setter.Value>
            </Setter>
        </Style>
 

но я получаю сообщение об ошибке в этих строках

 <Setter Property="BackgroundGradientStops">
    <Setter.Value>
 

в нем говорится: «Указанное значение не может быть присвоено. Ожидался следующий тип: «GradientStopCollection»

Ответ №1:

Попробуйте с:

 <Setter Property="BackgroundGradientStops">
    <Setter.Value>
        <pancake:GradientStopCollection>
            <pancake:GradientStop Offset="0.1" Color="{DynamicResource ExceptionBackground}"/>
            <pancake:GradientStop Offset="0.5" Color="{DynamicResource OtherColor}"/>
        </pancake:GradientStopCollection>
    </Setter.Value>
</Setter>
 

Также вам необходимо указать как минимум 2 цвета (2 GradientStop ), иначе это вызовет исключение

Java.Lang.Исключение IllegalArgumentException: «требуется> = 2 количества цветов»

и это не делает sens градиентом только с одним цветом.

Комментарии:

1. Ну, имеет смысл сделать один цвет, я делаю это только для устранения дефекта в элементе управления pancake в UWP, где цвет фона не обрезается до границ закругленных углов. Эта работа описана в вопросах для элемента управления pancake в их проекте github. Остальное я попробую и посмотрю, работает ли это, и отправлю обратно. Спасибо.

2. Хорошо, вы можете опубликовать ссылку на эту проблему в комментарии, возможно, это может быть кому-то полезно.

3. Вот ссылка на проблему с предоставленным обходным путем: github.com/sthewissen/Xamarin . Формы. PancakeView/проблемы /150