Я пытаюсь преобразовать свои свойства элемента управления блинами в стиль, чтобы все мои элементы управления блинами были стилизованы одинаково. Вот как выглядит мой 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 в стиле, но я не могу понять, как поместить фоновые градиенты в стиль.
У меня пока так:
<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»
Попробуйте с:
<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 количества цветов»
и это не имеет смысла градиент только с одним цветом.
Хорошо, что вы можете опубликовать ссылку на эту проблему в комментарии, может быть, это может быть полезно для кого-то.
Вот ссылка на проблему с предоставленным обходным решением: github.com/sthewissen/Xamarin.Forms.PancakeView/issues/150
Что ж, имеет смысл использовать один цвет, так как я делаю это только для устранения дефекта в элементе управления блинами в UWP, когда цвет фона не обрезается до границ закругленных углов. Этот обходной путь задокументирован в проблемах для управления блинами в их проекте github. Остальное я попробую и посмотрю, работает ли это, и отпишусь. Спасибо.