簡體   English   中英

Dotvvm運行時綁定到“對象”類型

[英]Dotvvm run-time binding to 'object' type

我有這堂課

public class Property{
     public string Name {get;set;}
     public object Value {get;set;} 
}

我想創建上述類的名單List<Property>和動態添加標記控制代碼而已,所以他們的網站,他們有一個例子這里和我的所作所為向實例添加類型的公共財產PropertyTextBoxWithLabel類並更改了上述示例中用於綁定的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 PropertyValue屬性仍然為null ,這是我被卡住的地方,我也嘗試調試setter ,結果發現它沒有到達那里,所以運行有問題時間綁定,這是這行代碼的“作為示例”

textBox.SetBinding(TextBox.TextProperty, GetValueBinding(TextProperty));

任何幫助將不勝感激:)

編輯:

為了得到更多的澄清,我有一個名為MainAppPage和Markup Control的頁面,其代碼簡單地稱為ContentControlMainAppPageMainAppPage <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM