Xamarin.Forms中的动态UI

Xamarin.Forms中的动态UI,xamarin.forms,Xamarin.forms,我想向移动应用程序页面添加一个可滚动的菜单。这里转账、账户、支付和交易是从XML文件生成的。其余是静态布局。我正在使用Xamarin.Forms。我想知道如何动态生成UI组件,并使用Xamarin.Forms将它们附加到占位符 动态UI创建就像人们所说的那样简单,有很多例子。但我认为问题在于根据自己的需要建立自己的控制。例如,我最终编写了自己的按钮,其中包含图像,如下所示: 因此,您必须编写一个方法来创建垂直堆栈布局(比如说外部容器),并将水平容器添加到“外部容器”(比如内部容器),然后将图像

我想向移动应用程序页面添加一个可滚动的菜单。
这里转账、账户、支付和交易是从XML文件生成的。
其余是静态布局。

我正在使用Xamarin.Forms。
我想知道如何动态生成UI组件,并使用Xamarin.Forms将它们附加到占位符


动态UI创建就像人们所说的那样简单,有很多例子。但我认为问题在于根据自己的需要建立自己的控制。例如,我最终编写了自己的按钮,其中包含图像,如下所示:

因此,您必须编写一个方法来创建垂直堆栈布局(比如说外部容器),并将水平容器添加到“外部容器”(比如内部容器),然后将图像和标签添加到该“内部容器”并使其成为“innerContainer.HorizontalOptions=LayoutOptions.Center”等等。如果你想要边界,它会变得复杂:)


所以你必须加入像这样的层级控制。首先想一想,如何用现有控件绘制控件,而不是编写代码:)希望我说得很清楚。

动态UI创建就像人们说的那样简单,有很多例子。但我认为问题在于根据自己的需要建立自己的控制。例如,我最终编写了自己的按钮,其中包含图像,如下所示:

因此,您必须编写一个方法来创建垂直堆栈布局(比如说外部容器),并将水平容器添加到“外部容器”(比如内部容器),然后将图像和标签添加到该“内部容器”并使其成为“innerContainer.HorizontalOptions=LayoutOptions.Center”等等。如果你想要边界,它会变得复杂:)


所以你必须加入像这样的层级控制。首先考虑如何使用现有控件绘制控件,而不是对其进行编码:)希望我说清楚。

我认为您可以使用“集合视图”,这是xamarin.forms的新功能或“可绑定布局”使其动态。

我认为您可以使用“集合视图”,这是xamarin.forms或“可绑定布局”的新功能使其动态化。

在Xamarin站点上有许多使用XAML和编程方式构建UI的示例。你到底不明白什么?@Jason我想让人们想出他们的想法,如何达到目的。这样,如果我看到一个比我现在拥有的更好的解决方案,我就可以采用这个解决方案。如果我的解决方案比提出的所有解决方案都好,或者没有提出任何解决方案,那么我可以发布我的解决方案。这就是我学习编码的方式,在问答网站上这样做的人帮我节省了工作时间。我想我有一个有效的问题。@sandahuang这是一个有效的问题。也就是说,我建议您先发布您的解决方案,如果您的解决方案给您带来了问题,请提出批评。在Xamarin站点上有许多使用XAML和编程方式构建UI的示例。你到底不明白什么?@Jason我想让人们想出他们的想法,如何达到目的。这样,如果我看到一个比我现在拥有的更好的解决方案,我就可以采用这个解决方案。如果我的解决方案比提出的所有解决方案都好,或者没有提出任何解决方案,那么我可以发布我的解决方案。这就是我学习编码的方式,在问答网站上这样做的人帮我节省了工作时间。我想我有一个有效的问题。@sandahuang这是一个有效的问题。也就是说,我建议你先发布你的解决方案,如果你的解决方案给你带来了问题,请你提出批评。小心在表格单元格中使用这个策略。像这样嵌套堆栈布局可能会带来巨大的性能损失。在表单元格中使用此策略时要小心。像这样的嵌套堆栈布局可能会有显著的性能损失。请详细说明请详细说明
Vertical Stack (whole container)
->Vertical Stack (height 2px) upper border
->Horizontal Stack (to hold middle controls,left border,inner image and text holder, right border etc.)
    ->Horizontal Stack (width 2 px) left border
    ->Vertical Stack (layoutOptions=Fillandexpand)
        ->Image (layoutOptions=Center)
        ->Label (layoutOptions=Center)
    ->Horizontal Stack (width 2 px) right border
->Vertical Stack (height 2px) lower border