Интервал между макетами стека, содержащими Grid в формах Xamarin - PullRequest
0 голосов
/ 20 марта 2020

Я относительно новичок в Xamarin, и я пытаюсь создать экран, похожий на этот:

enter image description here

Для перечисленных элементов по вертикали, что я сделал , я создал отдельные StackLayout s для каждого элемента (так что в будущем, если мне нужно будет что-то добавить к конкретному элементу c, я смогу это сделать), что сами по себе имеют Grid s, которые дополнительно имеют Icon s и Label. Примерно так (я не могу использовать XAML и должен его кодировать):

 ysiStackLayout layoutPropertyDashboardIem = new ysiStackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.Center,
       };

        layoutDashboardItems.Children.Add(layoutPropertyDashboardIem);

        Grid gridProperty = new Grid()
        {
            HorizontalOptions = LayoutOptions.Center,
            RowDefinitions = {
                new RowDefinition { Height = GridLength.Auto }
            },
            ColumnDefinitions =
            {
                new ColumnDefinition {Width = GridLength.Auto}
            },
            ColumnSpacing = 1
        };

        layoutPropertyDashboardIem.Children.Add(gridProperty); 

        ysiIcon iconProperty = new ysiIcon()
        {
            Icon = IconSet.fa_AngleDoubleLeft,
            IconSize = 30
        };

        gridProperty.Children.Add(iconProperty, 0, 0);

        ysiLabel labelProperty = new ysiLabel()
        {
            Text = "Property"
        };

        gridProperty.Children.Add(labelProperty, 1, 0);

`Это дает мне нужные предметы правильно; enter image description here

Но я не могу назвать расстояние между двумя предметами, досадно. Я пробовал свойства, такие как Spacing и Padding, но не смог найти точный путь. Может кто-нибудь порадовать меня подходом, который я могу выбрать? Это действительно очень поможет!

1 Ответ

1 голос
/ 21 марта 2020

Во-первых, я бы предложил добавить дочерние элементы перед добавлением родителей в макет root, если это имеет смысл.

Итак, создайте свою сетку, добавьте элемент в эту сетку, а затем добавьте сетку к родителю. StackLayout.

Чтобы добавить интервал, я бы попробовал Spacing и / или Margin:

ysiStackLayout layoutPropertyDashboardIem = new ysiStackLayout() {
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.Center,
    Spacing = 5                                 // Adding Spacing
};

Grid gridProperty = new Grid() {
    HorizontalOptions = LayoutOptions.Center,
    RowDefinitions = { new RowDefinition { Height = GridLength.Auto } },
    ColumnDefinitions = { new ColumnDefinition {Width = GridLength.Auto} },
    ColumnSpacing = 1,
    Margin = new Thickness(5)                   // Adding Margin
};

ysiIcon iconProperty = new ysiIcon() {
    Icon = IconSet.fa_AngleDoubleLeft,
    IconSize = 30
};

gridProperty.Children.Add(iconProperty, 0, 0);

ysiLabel labelProperty = new ysiLabel { Text = "Property" };

gridProperty.Children.Add(labelProperty, 1, 0);

layoutPropertyDashboardIem.Children.Add(gridProperty); // Add children in reverse order up the layout tree

layoutDashboardItems.Children.Add(layoutPropertyDashboardIem); // Add children in reverse order up the layout tree
...