C# Xamarin形成网格布局

C# Xamarin形成网格布局,c#,layout,xamarin.forms,grid,stackpanel,C#,Layout,Xamarin.forms,Grid,Stackpanel,我很难在网格上设置文本和图像。以下是我需要做的: 两列 第一列包含两行文本,左对齐 第二列包含单个图像,占据整个高度,但右对齐 所以它基本上是这样的: 我试过两种方法 第一种方法是创建2x2网格,并将图像的ColumnSpan设置为2。但是图标没有垂直居中,它仍然在第一行 第二种方法是创建一个1x2网格(1行2列),然后将包含两个文本字符串的StackLayout添加到第一个子级,将图像添加到第二个子级。这次图像垂直居中,但不幸的是左对齐 有人能帮忙吗 多谢各位 第二种方法的代码:

我很难在网格上设置文本和图像。以下是我需要做的:

  • 两列
  • 第一列包含两行文本,左对齐
  • 第二列包含单个图像,占据整个高度,但右对齐
所以它基本上是这样的:

我试过两种方法

  • 第一种方法是创建2x2网格,并将图像的ColumnSpan设置为2。但是图标没有垂直居中,它仍然在第一行

  • 第二种方法是创建一个1x2网格(1行2列),然后将包含两个文本字符串的StackLayout添加到第一个子级,将图像添加到第二个子级。这次图像垂直居中,但不幸的是左对齐

有人能帮忙吗

多谢各位

第二种方法的代码:

        Content = new Grid
        {
            //Padding = new Thickness(75, 5, 25, 5),
            VerticalOptions = LayoutOptions.FillAndExpand,
            HorizontalOptions = LayoutOptions.StartAndExpand,

            RowDefinitions =
            {
                new RowDefinition(),
            },

            ColumnDefinitions =
            {
                new ColumnDefinition(),
                new ColumnDefinition(),
            },
        };

        (Content as Grid).RowDefinitions[0].Height = new GridLength(1, GridUnitType.Star);
        (Content as Grid).ColumnDefinitions[0].Width = new GridLength(9, GridUnitType.Star);
        (Content as Grid).ColumnDefinitions[1].Width = new GridLength(1, GridUnitType.Star);

        StackLayout left = new StackLayout
        {
            HorizontalOptions = LayoutOptions.StartAndExpand,
            VerticalOptions = LayoutOptions.Center,
            Orientation = StackOrientation.Vertical,
            Children =
            {
                firstName,
                lastName,
            }
        };

        StackLayout right = new StackLayout
        {
            HorizontalOptions = LayoutOptions.Start,
            VerticalOptions = LayoutOptions.Center,
            Orientation = StackOrientation.Horizontal,
            Children =
            {
                icon,
            }
        };

        (Content as Grid).Children.Add(left, 0, 0);
        (Content as Grid).Children.Add(right, 1, 0);
        //(Content as Grid).Children[1].HorizontalOptions = LayoutOptions.End
现在看起来是这样的:

图像应位于网格的最右侧


谢谢。

在您的#2示例中,“右”堆栈布局具有水平选项。开始,这意味着它将左对齐。您可能想让它填充它的容器,然后右对齐其中的图像。或者完全取消StackLayout

在您的#2示例中,“右”StackLayout具有水平选项。开始,这意味着它将左对齐。您可能想让它填充它的容器,然后右对齐其中的图像。或者完全取消StackLayout

我个人会使用2x2网格,并将图像的行跨度(而不是列)设置为2。您应该能够调整图像对齐设置以获得所需内容。在#2示例中,“右”堆栈布局具有水平选项。开始,这意味着它将左对齐。您可能想让它填充它的容器,然后右对齐其中的图像。或者扔掉StackLayout altogetherDuh我不敢相信它这么简单。谢谢你指出这一点。请您将此作为答案发布,以便我标记并结束此问题,好吗?再次感谢。我个人会使用2x2网格,并将图像的行跨度(而不是列)设置为2。您应该能够调整图像对齐设置以获得所需内容。在#2示例中,“右”堆栈布局具有水平选项。开始,这意味着它将左对齐。您可能想让它填充它的容器,然后右对齐其中的图像。或者扔掉StackLayout altogetherDuh我不敢相信它这么简单。谢谢你指出这一点。请您将此作为答案发布,以便我标记并结束此问题,好吗?再次感谢,就这样。谢谢,就这样。谢谢