[英]Dotvvm run-time binding to 'object' type
我有這堂課
public class Property{
public string Name {get;set;}
public object Value {get;set;}
}
我想創建上述類的名單List<Property>
和動態添加標記控制代碼而已,所以他們的網站,他們有一個例子這里和我的所作所為向實例添加類型的公共財產Property
的TextBoxWithLabel
類並更改了上述示例中用於綁定的setter
,如下所示:
[MarkupOptions(AllowHardCodedValue = false)]
public string Text
{
get { return (string)GetValue(TextProperty); }
set {
SetValue(TextProperty, value);
Property.Value = value;
}
}
public static readonly DotvvmProperty TextProperty
= DotvvmProperty.Register<string, TextBoxWithLabel>(c => c.Text, "");
當我運行應用程序並在輸入字段中鍵入內容時,Type Property
的Value
屬性仍然為null
,這是我被卡住的地方,我也嘗試調試setter
,結果發現它沒有到達那里,所以運行有問題時間綁定,這是這行代碼的“作為示例”
textBox.SetBinding(TextBox.TextProperty, GetValueBinding(TextProperty));
任何幫助將不勝感激:)
編輯:
為了得到更多的澄清,我有一個名為MainAppPage
和Markup Control的頁面,其代碼簡單地稱為ContentControl
, MainAppPage
在MainAppPage
<controls:ContentControl Instance="{value: ClassObject}"/>
使用List<Property>
傳遞給ContentControl
然后ContentControl
開始進行迭代通過List<Property>
並創建從HtmlGenericControl
派生的InputField
。
InputField
的呈現就像ContentControl
的魅力一樣,是唯一的不起作用,這是綁定,因此,再次如何將Property.Value
綁定到InputField.Text
以便用戶在UI中發生的任何更改都會在InputField
像其他對象一樣InputField
焦點之后反映到Property.Value
其他MVVM模式?
DotVVM不使用設置程序分配給屬性,而是在DotvvmBindableObject
設置基礎屬性存儲。 WPF對其DependencyProperty
的操作非常類似,它需要表示數據綁定。 實際上,您可以完全省略C#屬性聲明,聲明字段TextProperty
並調用DotvvmProperty.Register就足以為dotvvm聲明屬性。
其他“問題”是控件不存儲任何數據,所有內容都必須保留在視圖模型中。 您只能使用控件屬性對視圖模型屬性進行數據綁定。 我認為我們在這里遇到了XY問題 ,我只能說出您的代碼為什么不起作用,但是我不知道實際上在試圖做什么。
無論如何,如果您只是想將控件“綁定”到視圖模型屬性,請查看https://www.dotvvm.com/docs/tutorials/control-development-markup-controls-with-code/2.0 。 您可以這樣聲明屬性:
[MarkupOptions(AllowHardCodedValue = false)]
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DotvvmProperty TextProperty
= DotvvmProperty.Register<string, TextBoxWithLabel>(c => c.Text, "");
在控件的標記中使用它
@baseType FullName.Of.YourControl
{{value: _control.Text}}
並使用頁面中的控件(或其他控件)
<cc:YourControl Text="{value: _this.Property.Value}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.