Я создал проект Xamarin.Forms с макетом XAML и макетом C #, чтобы быть опытным с обеих сторон монеты.

На моей Xaml ContentPage я сделал Boxview внутри моего StackLayout примерно так

<ScrollView>
    <StackLayout>
        <BoxView HeightRequest="100"
                 HorizontalOptions="Center"
                 VerticalOptions="CenterAndExpand"
                 WidthRequest="100">
            <BoxView.Color>
                <Color x:FactoryMethod="FromRgb">
                    <x:Arguments>
                        <x:Int32>0</x:Int32>
                        <x:Int32>0</x:Int32>
                        <x:Int32>255</x:Int32>
                    </x:Arguments>
                </Color>
            </BoxView.Color>
        </BoxView>
    <StackLayout>
</ScrollView>

Воспроизведение его на моей C # ContentPage я сделал

this.Content = new ScrollView {
    Content = new StackLayout {
    Children = {
        new BoxView{
                        Color = Color.FromRgb(0, 0, 255), 
                        HeightRequest = 100, 
                        HorizontalOptions = LayoutOptions.Center, 
                        VerticalOptions = LayoutOptions.CenterAndExpand, 
                        WidthRequest = 100
                        }
                }
        };
}

На обеих страницах я получаю правильный результат коробки, окрашенной в синий цвет

У меня возникли проблемы с репликацией следующего в C # с использованием параметров типа Double

<Color x:FactoryMethod="FromRgb">
    <x:Arguments>
        <x:Double>1</x:Double>
        <x:Double>0</x:Double>
        <x:Double>0</x:Double>
    </x:Arguments>
</Color>
1
TheGame1083 29 Апр 2020 в 15:04

2 ответа

Лучший ответ

Из этого метода Color.FromRgb В статье мы видим, что есть два метода, которые имеют int и двойной параметр.

Поэтому, если вы используете параметр типа Double, вам также может понадобиться параметр типа Double в C #.

  this.Content = new StackLayout
        {
            Children = {
        new BoxView{
                        Color = Color.FromRgb((double)1,(double)0, (double)0),
 HeightRequest = 100,
 HorizontalOptions = LayoutOptions.Center,
 VerticalOptions = LayoutOptions.CenterAndExpand, WidthRequest = 100
                            }
                    }
        };
0
Cherry Bu - MSFT 30 Апр 2020 в 05:40

Используйте конструктор; public Color (double r, double g, double b);

var myColor = new Color(r,g,b);
0
d219 29 Апр 2020 в 13:25