Xamarin Forms Grid Positioning - PullRequest
       0

Xamarin Forms Grid Positioning

0 голосов
/ 07 декабря 2018

Мой код создает сетку так, как я хочу, но моя проблема в ее форматировании.Например, в приведенном ниже синтаксисе сетка (с использованием эмулятора iPhone) начинается почти на половине пути экрана.Насколько я могу судить, я только объявляю ширину столбца даты, поскольку я не хочу, чтобы он был наркотиком в 2 строки, если это двухзначный месяц или двухзначный год.

Что будетлучший способ изменить этот код так, чтобы сетка охватывала весь экран в формате Up & Down, а не по горизонтали.

    private void LoadInvoiceGrid()
{
    List<InvoiceHistory> IH = new List<InvoiceHistory>();
    IH = dal.GetInvoices(company);

    Grid usergrid = new Grid();

    //Adding in this line makes no diff to the display of the grid
    usergrid.VerticalOptions = LayoutOptions.FillAndExpand;
    //

    usergrid.Padding = new Thickness(10, 120, 0, 0);
    usergrid.RowDefinitions.Add(new RowDefinition { Height = 50 });
    foreach (var item in IH)
        usergrid.RowDefinitions.Add(new RowDefinition { Height = 50 });

    usergrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
    usergrid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
    usergrid.ColumnDefinitions.Add(new ColumnDefinition { Width = 50 });


    Label invoicenumHeader = new Label
    {
        Text = "Invoice #"
    };
    Label invoiceamountHeader = new Label
    {
        Text = "Amount"
    };
    Label invoiceduedateHeader = new Label
    {
        Text = "Due Date"
    };
    Grid.SetColumn(invoicenumHeader, 1);
    Grid.SetColumn(invoiceamountHeader, 2);
    Grid.SetColumn(invoiceduedateHeader, 3);
    usergrid.Children.Add(invoicenumHeader);
    usergrid.Children.Add(invoiceamountHeader);
    usergrid.Children.Add(invoiceduedateHeader);

    int rowIndex = 1;
    foreach (var item in IH)
    {
        string date = item.invoiceduedate.Date.ToShortDateString();

        Label invoicenum = new Label
        {
            Text = item.invoicenum.ToString()
        };
        Label invoiceamount = new Label
        {
            Text = "$" + item.invoiceamt.ToString("0.##")
        };
        Label invoiceduedate = new Label
        {
            Text = date
        };
        Grid.SetRow(invoicenum, rowIndex);
        Grid.SetRow(invoiceamount, rowIndex);
        Grid.SetRow(invoiceduedate, rowIndex);
        Grid.SetColumn(invoicenum, 1);
        Grid.SetColumn(invoiceamount, 2);
        Grid.SetColumn(invoiceduedate, 3);
        usergrid.Children.Add(invoicenum);
        usergrid.Children.Add(invoiceamount);
        usergrid.Children.Add(invoiceduedate);
        rowIndex++;
    }
    InvoiceGrid = usergrid;
}

EDIT
В моем XAML у меня естьВертикальный параметр установлен на Fill And Expand, и это не имеет никакого значения.Смотрите мой XAML для этой страницы.

    <?xml version="1.0" encoding="utf-8" ?>  
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"  
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"  
         x:Class="Pages.DoIt"  >
<ContentPage.Content>  
<StackLayout Orientation="Vertical" Padding="30" Spacing="40"> 
    <Label TextColor="#77d065" FontSize = "8" Text="Yes, Test, Text" />
    <Label TextColor="Blue" FontSize="8" Text="{Binding CompanyWelcomeMessage}" />
    <ContentView VerticalOptions="FillAndExpand" Content="{Binding InvoiceGrid,Mode=TwoWay}" Padding="0,10,0,0"/>
</StackLayout>
</ContentPage.Content>  
</ContentPage>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...