Как отобразить BoxView, используя C# передавая параметры типа Double? - PullRequest
1 голос
/ 29 апреля 2020

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

На моей странице содержимого Xaml я сделал 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>

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

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

Так что, если вы используете параметр типа 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 голосов
/ 29 апреля 2020

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

var myColor = new Color(r,g,b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...