【问题标题】:Modify Grid created using XAML in code behind - Xamarin.Forms在后面的代码中修改使用 XAML 创建的网格 - Xamarin.Forms
【发布时间】:2018-02-04 16:38:33
【问题描述】:

我正在创建一个跨平台 Xamarin.Forms 应用程序。在一个页面中,我有以下列表视图。

<ListView.ItemTemplate>
    <DataTemplate>
        <ViewCell>
            <Grid x:Name="activityGrid">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="2*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Label Text="{Binding Name}" />
            </Grid>
        </ViewCell>
    </DataTemplate>
</ListView.ItemTemplate> 

如您所见,列表视图中的每个项目都有一行和两列。我定义的第一个标签将在Row=0Column=0 中设置,因为这是默认设置。现在关于Row=0Column =1,我希望它是基于某些标准的开关或条目。这是我的代码。

foreach (var activity in activities)
{
    if (activity.Measurement == 0)
    {
        Switch yesNo = new Switch();
    }
    else
    {
        Entry measure = new Entry();
    }
}

现在帮我根据要求将孩子添加到网格布局中。

【问题讨论】:

    标签: c# xaml xamarin.forms


    【解决方案1】:

    要以编程方式将控件添加到网格,请执行以下操作:

    activityGrid.Children.Add(control, col, row);
    

    【讨论】:

    • 我之前尝试过,但没有成功。它会导致错误提示“当前上下文中不存在名称 'activityGrid'”
    • 好的,这种方法不起作用,因为您的 activityGrid 包含在 DataTemplate 中。我不确定 ListView 是用于这种情况的正确控件
    • 谢谢!这真的帮助了我!出于某种原因,我固定在 ListViews 上,无法考虑其他任何事情。但是现在我意识到我的要求是一个有限列表,最有可能在 10 以内,所以我可以使用 StackLayout 而不是 ListView,但是如果我需要一个非常长的列表,比如 200,那么我可以使用什么。
    猜你喜欢
    • 2023-03-09
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多