Как получить доступ к пользовательскому StackLayout из CodeBehind в Xamarin.Forms? - PullRequest
0 голосов
/ 01 марта 2020

Я реализовал пользовательский StackLayout в своем проекте Xamarin.Forms, чтобы сделать фон ContentPage градиентом, и я хочу изменить поток градиента в коде в зависимости от ОС устройства. Проблема в том, что когда я присваиваю значение x: Name, я не могу найти его в классе xaml.cs, поэтому я не могу получить доступ к его свойствам. Вот код:

Пользовательский код StackLayout:

namespace MyProject.Renderers
{
    public class GradientLayout : StackLayout
    {
        public string ColorsList { get; set; }
        public Color[] Colors
        {
            get
            {
                string[] hex = ColorsList.Split(',');
                Color[] colors = new Color[hex.Length];

                for (int i = 0; i < hex.Length; i++)
                {
                    colors[i] = Color.FromHex(hex[i].Trim());
                }

                return colors;
            }
        }

        public GradientColorStackMode Mode { get; set; }
    }
}

xaml код:

<renderers:GradientLayout
        x:Name="theGradient"
        ColorsList="#D81BDE,#4847FF"
        Mode="ToBottomLeft">

        //Irrelevant content

</renderers:GradientLayout>

xaml.cs код:

public partial class LogInPage : ContentPage
    {
        public LogInPage()
        {
            InitializeComponent();

            if (Device.RuntimePlatform == Device.iOS)
            {
                //theGradient do not appear 
            }
        }
    }

И это все, если вам нужна дополнительная информация, я предоставлю ее, как только увижу ваш запрос, спасибо всем за потраченное время, хорошего дня.

1 Ответ

1 голос
/ 02 марта 2020

Вы создали пользовательский рендер для IOS и Android, как эта тема? { ссылка }

Если это так, убедитесь, что вы добавили WidthRequest="200" HeightRequest="200" для вашего GradientLayout

  <renderers:GradientLayout
   ColorsList="#dd8f68,#a9a9a9,#3a3939"
   Mode="ToBottomRight" 
   WidthRequest="200" 
   HeightRequest="200">

 </renderers:GradientLayout>

Вот снимок экрана.

enter image description here

Если приведенный выше код все еще не работает. Вы можете использовать Magic Gradients в своем приложении https://github.com/mgierlasinski/MagicGradients

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