【问题标题】:Xamarin Forms - Dynamically create views based on conditionXamarin Forms - 根据条件动态创建视图
【发布时间】:2023-03-14 07:47:01
【问题描述】:

我有一个调用后端的 Xamarin.Forms 应用程序。后端提供项目列表。这些项目都有一个类型和一个描述。根据类型,我需要决定我需要创建什么视图元素(条目、标签、选择器、复选框等)。描述也应该是一个标签,每个视图都有它自己的描述。

我怎样才能做到这一点?我真的很难弄清楚这一点..

示例:后端给出一个包含两个对象的列表。第一个对象有 phonenumer 有一个类型,第二个元素有一个 boolean 作为类型。第一个应该只创建一个条目,第二个应该创建一个选择器。两个行/视图都应该有一个描述,可以只是一个标签。

【问题讨论】:

  • 您可以使用 StackLayout 并在代码隐藏文件中创建视图。 docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/…
  • 那么,循环遍历列表,创建视图并将其添加到堆栈布局?这行得通吗?
  • 是的,但是 StackLayout 应该存在于 ContentPage.Content 中。我的建议是,如果您只有 4-5 个视图组合,您可以编写方法并准备好并在列表中循环,您可以继续调用所需的方法。
  • 嗯,好吧,我会试试的!谢谢。
  • 非常欢迎!如果您有其他疑问,请告诉我。

标签: listview xamarin.forms code-behind dynamic-view


【解决方案1】:

您可以使用可绑定布局 (https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/bindable-layouts) 和 DataTemplateSelector (https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/templates/data-templates/selector),根据您收到的对象的类型提供相应的 DataTemplate。

在每个 DataTemplate 的 XAML 上,您可以进行绑定 (https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/data-binding-basics)

这样,您无需在代码隐藏中编写任何代码,也无需循环任何内容,因为可绑定布局会为您完成并根据收到的对象决定要显示的内容。

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多