You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET MAUI中根据用户选择动态创建Entry控件

MAUI中点击按钮动态显示汽车信息输入框的实现方案

方案一:提前定义Entry并控制可见性(推荐)

这种方式更简洁,无需动态创建控件,通过代码控制IsVisible属性即可实现需求:

XAML代码

<VerticalStackLayout>
    <!-- 提示文本 -->
    <Label Text="你有汽车吗?" FontSize="Medium" Margin="10"/>
    
    <!-- 选择按钮组 -->
    <HorizontalStackLayout Margin="10" Spacing="20">
        <Button Text="是" Clicked="YesButton_Clicked"/>
        <Button Text="否" Clicked="NoButton_Clicked"/>
    </HorizontalStackLayout>
    
    <!-- 汽车信息输入区域(初始隐藏) -->
    <VerticalStackLayout x:Name="CarInputLayout" IsVisible="False" Margin="10" Spacing="10">
        <Entry Placeholder="请输入汽车品牌"/>
        <Entry Placeholder="请输入汽车型号"/>
    </VerticalStackLayout>
</VerticalStackLayout>

后台C#代码

private void YesButton_Clicked(object sender, EventArgs e)
{
    CarInputLayout.IsVisible = true;
}

private void NoButton_Clicked(object sender, EventArgs e)
{
    CarInputLayout.IsVisible = false;
}

方案二:纯代码动态创建Entry

如果需要完全通过代码生成控件,可以直接实例化Entry并添加到布局中:

XAML代码

<VerticalStackLayout x:Name="MainLayout">
    <Label Text="你有汽车吗?" FontSize="Medium" Margin="10"/>
    <HorizontalStackLayout Margin="10" Spacing="20">
        <Button Text="是" Clicked="YesButton_Clicked"/>
        <Button Text="否" Clicked="NoButton_Clicked"/>
    </HorizontalStackLayout>
</VerticalStackLayout>

后台C#代码

// 全局变量存储动态创建的输入框,方便后续控制
private Entry _brandEntry;
private Entry _modelEntry;

private void YesButton_Clicked(object sender, EventArgs e)
{
    // 避免重复创建控件
    if (_brandEntry == null)
    {
        _brandEntry = new Entry { Placeholder = "请输入汽车品牌", Margin = new Thickness(10) };
        _modelEntry = new Entry { Placeholder = "请输入汽车型号", Margin = new Thickness(10) };
        
        MainLayout.Add(_brandEntry);
        MainLayout.Add(_modelEntry);
    }
    else
    {
        // 已创建则直接显示
        _brandEntry.IsVisible = true;
        _modelEntry.IsVisible = true;
    }
}

private void NoButton_Clicked(object sender, EventArgs e)
{
    if (_brandEntry != null && _modelEntry != null)
    {
        _brandEntry.IsVisible = false;
        _modelEntry.IsVisible = false;
        // 也可直接移除控件:MainLayout.Remove(_brandEntry); MainLayout.Remove(_modelEntry);
    }
}

关于CollectionView的问题

你之前尝试用CollectionView是不合适的——CollectionView的核心是批量展示结构化列表数据(比如多辆汽车的信息列表),而这里仅需显示1组(2个)输入框,直接用VerticalStackLayout管理控件的显示/隐藏或动态添加,逻辑更简单,也更贴合场景需求。


官方文档参考

可查看MAUI官方文档中的以下内容:

  • 布局管理章节:了解VerticalStackLayout的控件添加与可见性控制
  • Entry控件章节:学习Entry的属性配置与使用
  • 动态控件创建章节:掌握代码中实例化并添加控件的方法

内容的提问来源于stack exchange,提问作者Donfidididondada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:05:22