#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