【问题标题】:Xamarin Forms - Get custom control runtime (with valueconverter?)Xamarin Forms - 获取自定义控件运行时(使用 valueconverter?)
【发布时间】:2020-04-07 10:18:52
【问题描述】:

我有一个 Xamarin 表单应用程序。它有一个页面。该页面有一个列表视图。 listviews 绑定到源列表。我想要的是根据列表中每个项目具有的特定属性来决定使用什么自定义控件。我怎样才能做到这一点?

还要求自定义控件绑定到列表中的值。

我尝试了以下方法:

                <ContentView Content="{Binding IsPriority, Converter={StaticResource RoadIndicatorBackgroundValueConverter}}" ControlText="{Binding TowingOrder.Location.RoadIndicator}"></ContentView>

这不起作用,因为我无法与特定自定义控件的 ControlText 绑定。​​

上图显示了问题。 A1、A50 和蓝色图标都是自定义控件,不是图像。还有一些这些自定义控件。我不能只制作 10 个数据模板并复制粘贴所有内容吗?那将是很多重复的代码。我不能只在数据模板中使用基础对象,然后将属性与转换器绑定并使用开关/案例来决定返回哪个自定义控件吗?

【问题讨论】:

  • 您可以使用 DataTemplateSelector 。检查docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…
  • 感谢您的回复。当我有一个大数据模板并且只有一个区别时,我认为这个解决方案似乎不是很干净。有没有其他方法可以减少重复代码?抱歉,我创建了两个帖子,我无法弄清楚。
  • 您可以提供您想要实现的效果(如屏幕截图)。
  • 我添加了截图。
  • 只需要绑定颜色和文字即可。单元格类似

标签: xamarin.forms custom-controls ivalueconverter


【解决方案1】:

在运行时绑定整个布局的内容并不是一个好的设计。

从屏幕截图来看,每个单元格似乎都是相似的。因此您可以创建一个基本自定义控件并提前定义所有控件,并在后面的代码中绑定属性IsVisible。然后设置它的值来控制应该显示哪个元素。

如果单元格之间有很多挖掘差异,使用DataTemplateSelector更好。

【讨论】:

    猜你喜欢
    • 2020-01-30
    • 2019-11-21
    • 1970-01-01
    • 2018-09-08
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多