【问题标题】:How to assign the grid to a grid如何将网格分配给网格
【发布时间】:2021-04-27 20:31:17
【问题描述】:

我在 xaml 文件中新建了一个没有任何设置的网格对象。 通过'OnAppearing()'中的'Build_Grid()'导入数据后,我想将'gridview'分配给'Grid_Info'以显示在屏幕上,代码'Grid_Info = gridview'不起作用。 我想知道如何满足我的需求?

<ContentPage.Content>
<StackLayout>
<Label Text="AAA" />
<Grid x:Name="Grid_Info">
</Grid>
</StackLayout>
</ContentPage.Content>


    void Build_Grid(Data data)
        {
        Grid gridview = new Grid();
        gridview.RowDefinitions.Add(new RowDefinition() { Height = 40 });
        gridview.Children.Add(data[0],0,0);
        ...
Grid_Info = gridview; //it does not work...
        }

protected override void OnAppearing()
{
Data data = new Data();
...
Build_Grid(data);
}

【问题讨论】:

    标签: xamarin.forms xamarin.android binding xamarin.ios grid


    【解决方案1】:

    如果您已经在 XAML 中定义了 Grid,则无需这样做

    Grid gridview = new Grid();
    

    而只是直接引用Grid_Info

    Grid_Info.RowDefinitions.Add(new RowDefinition() { Height = 40 });
    Grid_Info.Children.Add(data[0],0,0);
    

    【讨论】:

    • 嗨Jason,因为我必须在OnAppearing() 中获取数据,而且我必须在数据更改时更改网格内容。所以我想通过 Build_Grid() 刷新网格内容,然后将网格分配给 'Grid_Info' 来显示。如果我使用您推荐的方式,我不知道如何重置 Grid_Info 并更改新网格以显示。
    • Grid_Info.Children.Clear()
    • 嗨杰森,虽然你建议的方法不是我最初想尝试的方向。但是这个方法解决了我的问题。非常感谢您的热情回复!
    【解决方案2】:

    你可以试试下面的代码。我制作了一个数据类以进行测试。它对我有用。

    public partial class Page3 : ContentPage
    {
        Data[] data;
        public Page3()
        {
            InitializeComponent();
            data = new Data[2];
            data[0] = new Data { view = new Button() { BackgroundColor = Color.Red } }; //data[0]
            data[1] = new Data { view = new Label() { BackgroundColor = Color.Green, Text = "Label" } };//data[1]
    
        }
        void Build_Grid(Data[] data)
        {
            Grid gridview = new Grid();
            Grid_Info.RowDefinitions.Add(new RowDefinition() { Height = 40 });
            Grid_Info.Children.Add(data[0].view, 0, 0);//show the red button
            Grid_Info = gridview; //it does not work...
        }
        protected override void OnAppearing()
        {
            base.OnAppearing();
            Build_Grid(data);
        }
    }
    public class Data
    {
        public View view { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 2013-05-25
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      相关资源
      最近更新 更多