【问题标题】:Xamarin.Forms correct way of Binding in ResourceDictionary ControlsXamarin.Forms 在 ResourceDictionary 控件中的正确绑定方式
【发布时间】:2017-06-05 20:32:03
【问题描述】:

我无法让它工作。

<ResourceDictionary>
    <ViewCell x:Key="Separator">
        <Label Text="{Binding Title}" />
    </ViewCell>
</ResourceDictionary>

类 Option 包含一个名为 Title 的属性,该属性设置为任何文本。但是,以下代码不起作用。标签中不显示任何文本。文本只是保持“空”。我做错了什么 - 如何正确设置绑定?

if (Resources.ContainsKey("Separator"))
{
    var cell = Resources["Separator"] as Cell;

    if (cell != null)
    {
        cell.BindingContext = option;

        section.Add(cell);
    }
}

【问题讨论】:

  • 您能解释一下您要达到的目标吗?在 XAML 中的资源字典中有一个单元格,然后通过代码添加它并使用绑定是不常见的。也许更多的上下文会有所帮助?
  • 当然,所以我的想法是有许多不同的 ViewCell(一些只包含文本、一些复选框等),我可以根据给定的“option.Type”(其中我已将上面简化为“分隔符”)。我的想法是在 XAML 中定义它们(就像我的大多数控件一样),然后在代码中使用它们。

标签: xaml xamarin binding xamarin.forms


【解决方案1】:

ResourceDictionary 中的对象只创建一次,并且每次使用它们时都会共享它们的实例。由于ViewCellBinding 不能重复使用,这不太可能起作用。

可以ResourceDictionary 中定义的是包含ViewCellDataTemplate,在这种情况下,它可以共享,因为DataTemplate 内容将为每个人重新创建用法。

【讨论】:

  • 我在上面的评论中写道,我有许多不同的 ViewCell。我尝试了 DataTemplates,但在尝试从没有 TableView.ItemTemplate 或类似的代码创建这些时卡住了。当涉及到单个模板时,我同意,这很容易实现,但是多个呢?
  • 感谢您为我指明正确的方向。我能够使用 DataTemplateSelector 解决它:developer.xamarin.com/guides/xamarin-forms/templates/…
猜你喜欢
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 2012-04-11
  • 2016-12-29
相关资源
最近更新 更多