2016-06-22 10 views
2

はここreleventコードです:なぜStackLayoutのBackgroundColorがLabelsの色をオーバーライドするのですか?

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で定義された1つの背景色で表示されていることです。その他の色定義はすべて無視されます。
レイアウトの背景色はどのように定義できますか?グリッドのセルの背景色はどうしたらいいですか?

スクリーンショット:

screenshot

答えて

0

あなたStackLayoutは、ここに何をオーバーライドされていません。

Xamarin.Formsは、という非常に誤解を招くような独自のColorクラスを提供しています。色を作成するために使用したコンストラクタは、r,gおよびbというパラメータとしてdouble値をとります。不都合なことに、0255の間の値を区切りませんが、0.01.0の値があります。それは非常に混乱していると私は時間がかかりました。

RGBカラーで作業する場合、BackgroundColorプロパティをコードに設定するときは、単にColor.FromRgb()メソッドを使用してください。

private Label getTopLabel(string text) 
{ 
    return new Label 
    { 
     ... 
     BackgroundColor = Color.FromRgb(227, 49, 35), 
     TextColor = Color.Black 
    }; 
} 
関連する問題