2016-06-22 2 views
2

Вот Релевент код:Почему BackgroundColor для StackLayout переопределяет цвет ярлыков?

public class App : Application 
{ 
    public App() 
    { 
     StackLayout stack = new StackLayout 
     { 
      BackgroundColor = new Color(245, 240, 236) 
     }; 

     Grid top = new Grid 
     { 
      ... 
     }; 

     Grid grid = new Grid 
     { 
      ... 
     }; 

     for (int i = 0; i < 10; i++) 
     { 
      Label name = getLabel("Worksheet " + i); 
      name.TextColor = Color.Black; 
      grid.Children.Add(name, 0, i); 

      Label date = getLabel("Opened by me " + new DateTime(2016, 1, i + 1 % 30).ToString("dd MMM yyy")); 
      grid.Children.Add(date, 1, i); 

      Label dots = getLabel("dots"); 
      grid.Children.Add(dots, 2, i); 
     } 

     Label menu = getTopLabel("menu"); 
     Label header = getTopLabel("Worksheets"); 
     header.FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)); 
     Label plus = getTopLabel("plus"); 
     Label edit = getTopLabel("edit"); 

     top.Children.Add(menu, 0, 0); 
     top.Children.Add(header, 1, 0); 
     top.Children.Add(plus, 2, 0); 
     top.Children.Add(edit, 3, 0); 

     stack.Children.Add(top); 
     stack.Children.Add(grid); 

     ... 
    } 

    private Label getLabel(string text) 
    { 
     return new Label 
     { 
      ... 
      BackgroundColor = Color.White 
     }; 
    } 

    private Label getTopLabel(string text) 
    { 
     return new Label 
     { 
      ... 
      BackgroundColor = new Color(227, 49, 35), 
      TextColor = Color.Black 
     }; 
    } 
} 

Моя проблема заключается в том, что при запуске приложения, все сетки отображаются с цветом фона один определенный в StackLayout. Он игнорирует все другие определения цвета.
Как я могу определить цвет фона для макета, но сохранить цвета backgroun для ячеек сетки?

Скриншот:

screenshot

ответ

0

Ваш StackLayout не отвергая ничего здесь.

Xamarin.Forms предоставляет свой собственный класс Color, который очень вводит в заблуждение здесь в моих глазах. Конструктор, который вы использовали для создания цвета, принимает двойные значения в качестве параметров, называемых r, g и b. К несчастью, он не измеряет значения между 0 и 255, но значениями от 0.0 и 1.0. Это очень запутывает и у меня есть час, чтобы узнать ...

Поэтому при работе с цветами RGB просто используйте метод Color.FromRgb() при настройке свойства BackgroundColor в вашем коде.

private Label getTopLabel(string text) 
{ 
    return new Label 
    { 
     ... 
     BackgroundColor = Color.FromRgb(227, 49, 35), 
     TextColor = Color.Black 
    }; 
} 
Смежные вопросы