【问题标题】:How to bind individual html lines to multiple labels in xamarin.forms with c#如何使用 c# 将单个 html 行绑定到 xamarin.forms 中的多个标签
【发布时间】:2022-01-09 13:35:01
【问题描述】:

我刚开始使用绑定,所以这可能很简单,但我还没有在网上找到任何合适的答案。我有标签

<Label x:DataType="myNameSpace:MyClass" Text = "{Binding label}"/>
<Label x:DataType="myNameSpace:MyClass" Text = "{Binding label2}"/>

我需要将不同的 html 字符串从存储在 dynamic dynamicObject; 中的 json 元素绑定到不同的标签。所以我不能像Label Class Doc 建议的那样将整个视图分配给一个标签。 C#是

        Label label = new Label();
        label.Text = dynamicObject.mainText;
        label.TextType = TextType.Html;

但是,我需要使用 xaml,它总是说在数据上下文 MyClass 中找不到 label。即使使用public String label{get{return "Text";}} 也不会显示任何内容。从对象访问不同字符串并将它们显示在不同标签中的最有效方法是什么?

【问题讨论】:

  • 去掉x:DataType属性
  • @Jason 这什么也没做,只是告诉我没有用于绑定标签的 DataContext
  • 你如何设置你的 ViewModel ?

标签: c# xaml xamarin.forms data-binding


【解决方案1】:

{Binding label} 要求 BindingContext 包含一个名为 label 的“公共属性”。

你在任何地方设置 BindingContext 吗?在视图构造函数中,做

BindingContext=new MyClass();.

...根据需要进行修改,用它应该有的任何数据初始化 MyClass


那么 MyClass.cs 必须看起来像这样:

public class MyClass
{
    // These must be PUBLIC PROPERTIES.
    public string label { get; set; }
    public string label2 { get; set; }
}

用法如下:

<Label Text = "{Binding label}"/>
<Label Text = "{Binding label2}"/>

请注意,正如 Jason 所说,没有 x:DataType 属性。这些是针对不同情况的。


一个常见的错误是没有属性。

// This won't work. This is a FIELD, not a property.
public string label;

如果由于引用 DataContext 或 DataType 的错误仍然无法运行,则:

  • 删除 xaml 文件中的所有 x:DataType 语句。 XAML 的前几行中可能有一个。

  • 忽略(忽略)来自 Intellisense 的任何 DataType/DataContext 警告 - 只需运行它,看看它是否有效。

如果你让它工作,那么可以开始添加x:DataType 语句,以消除智能感知警告。但它们不属于单独的标签。我认为这是一个“高级”的话题,这里就不多说了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2015-09-24
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多