我剛剛開始使用系結,所以這可能很簡單,但我還沒有在網上找到任何合適的答案。我有標簽
<Label x:DataType="myNameSpace:MyClass" Text = "{Binding label}"/>
<Label x:DataType="myNameSpace:MyClass" Text = "{Binding label2}"/>
我需要將不同的 html 字串從存盤在 a 中的 json 元素系結dynamic dynamicObject;到不同的標簽。所以我不能像Label Class Doc 所建議的那樣將整個視圖分配給一個標簽。C# 是
Label label = new Label();
label.Text = dynamicObject.mainText;
label.TextType = TextType.Html;
但是,我需要使用 xaml 并且它總是說label在資料背景關系 MyClass 中找不到。即使使用public String label{get{return "Text";}}也不顯示任何內容。從物件訪問不同字串并將它們顯示在不同標簽中的最有效方法是什么?
uj5u.com熱心網友回復:
{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}"/>
請注意,正如杰森所說,沒有x:DataType屬性。這些是針對不同情況的。
一個常見的錯誤是沒有屬性。
// This won't work. This is a FIELD, not a property.
public string label;
如果由于參考 DataContext 或 DataType 的錯誤仍然無法運行,則:
洗掉
x:DataTypexaml 檔案中的所有陳述句。XAML 的前幾行中可能有一個。<-- 僅當這阻止應用程式成功構建或運行時才洗掉。如果它不會導致任何致命問題,請將其留在那里。忽略(忽略)來自 Intellisense 的任何 DataType/DataContext 警告 - 只需運行它,看看它是否有效。
如果你讓它作業,那么就可以開始重新添加x:DataType陳述句,以消除智能感知警告。但它們不屬于單個標簽。我認為這是一個“高級”話題,這里就不多說了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378602.html
標籤:C# xaml xamarin.forms 数据绑定
