Почему вывод пользовательского интерфейса отличается в этой версии кода XAML C #?

Я пытаюсь определить, почему следующий код C # не дает того же результата, что и версия XAML (верхнее изображение - XAML, нижнее изображение - код позади). Все параметры имеют равные значения, и я вложил свои стековые макеты, и я не уверен, чего не хватает, чтобы уравнять два выхода. Любая помощь приветствуется. Спасибо!

введите описание изображения здесь

Ниже приведен код XAML:

<StackLayout VerticalOptions="StartAndExpand" HorizontalOptions="FillAndExpand" Padding="8" Spacing="12" x:Name="JitPageStackView">
    <StackLayout Orientation="Horizontal" Spacing="0">
        <StackLayout BackgroundColor="#3d4f7c" WidthRequest="50" HeightRequest="50" VerticalOptions="Start">
        </StackLayout>

        <StackLayout HorizontalOptions="FillAndExpand" Padding="0" BackgroundColor="White">
            <Frame HasShadow="True" CornerRadius="0" BackgroundColor="#ededef" Padding="6">
                <Label TextColor="Black"  Text="This is text"></Label>
            </Frame>
        </StackLayout>
    </StackLayout>
</StackLayout>

И это код:

var Description = new StackLayout { HorizontalOptions = LayoutOptions.FillAndExpand, Padding = new Thickness(6, 6, 6, 6), BackgroundColor = Color.White };
var Frame = new Frame { Content = new Label { Text = "This is a long text", TextColor = Color.Black }, BackgroundColor = Color.FromHex("ededef"), CornerRadius = 0 };
Description.Children.Add(Frame);
var Step = new StackLayout {WidthRequest = 50, HeightRequest=50, VerticalOptions=LayoutOptions.Start, BackgroundColor=Color.FromHex("3d4f7c") };
var StepDisplay = new StackLayout { Spacing = 0, Orientation = StackOrientation.Horizontal };
StepDisplay.Children.Add(Step);
StepDisplay.Children.Add(Description);
JitPageStackView.Children.Add(StepDisplay);

person user387302    schedule 05.01.2019    source источник


Ответы (1)


В версии C # вы устанавливаете для заполнения StackLayout "Описание" вместо Frame

Измените это, и он должен работать как версия XAML

var Description = new StackLayout { HorizontalOptions = LayoutOptions.FillAndExpand, BackgroundColor = Color.White };
var Frame = new Frame { Content = new Label { Text = "This is a long text", TextColor = Color.Black }, BackgroundColor = Color.FromHex("ededef"), CornerRadius = 0,  Padding = new Thickness(6, 6, 6, 6) };
Description.Children.Add(Frame);

var Step = new StackLayout {WidthRequest = 50, HeightRequest=50, VerticalOptions=LayoutOptions.Start, BackgroundColor=Color.FromHex("3d4f7c") };

var StepDisplay = new StackLayout { Spacing = 0, Orientation = StackOrientation.Horizontal };

StepDisplay.Children.Add(Step);
StepDisplay.Children.Add(Description);
JitPageStackView.Children.Add(StepDisplay);

Надеюсь это поможет.-

person pinedax    schedule 05.01.2019
comment
Очень признателен! - person user387302; 06.01.2019