【问题标题】:Insert objects inside a Grid from c#从 c# 在 Grid 中插入对象
【发布时间】:2021-01-29 16:46:25
【问题描述】:

我有一个 Grid,在 xaml 代码中有一些行和列。在 c# 代码中,我有一个列表,我希望其中包含的每个对象都位于网格的特定点中。例如:对象 1:第 1 列第 1 行,对象 2:第 2 列第 1 行等等。我该怎么办?

<Grid Margin="15">
                <Grid.RowDefinitions>
                    <RowDefinition Height="40"/>
                    <RowDefinition Height="50"/>
                    <RowDefinition Height="2"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
</Grid>

里面有一些对象的列表

ObservableCollection<HumorDiary> listDiario = new ObservableCollection<HumorDiary>();

列表中的项目可能会有所不同,它们没有预先确定的数量。 对于列表中的每个元素,我想在 Grid 中创建一个按钮

【问题讨论】:

    标签: c# xaml xamarin.forms observablecollection


    【解决方案1】:

    Grid 有一个 Children 集合

    myGrid.Children.Add(myElement, col, row);
    

    【讨论】:

      【解决方案2】:

      你应该使用ItemsControl,它有四个部分:

      • 您将您的收藏绑定到ItemsSource 属性。
      • 您定义您的项目模板,该模板决定了您的模型项目 (HumorDiary) 在屏幕上的显示方式。
      • 您定义面板模板,该模板定义您的项目如何组合在一起。在这种情况下,这将是您在上面定义的 Grid
      • 要在网格中定位这些内容,您需要设置项目模板的样式并将Grid.RowGrid.Column 属性绑定到定义它们应该添加到何处的属性。

      【讨论】:

      • 这是一个 Xamarin 项目。 ItemsControl 不可用
      • Xamarin 有很多 ItemsControl 实现,选择一个并使用它!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2015-07-13
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多