【发布时间】:2018-11-27 22:36:48
【问题描述】:
我有这门课
public class Property{
public string Name {get;set;}
public object Value {get;set;}
}
我想创建上述类List<Property> 的列表并仅动态添加标记控件代码
,所以作为他们的网站,他们有一个示例HERE,我对该示例所做的是将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, "");
当我运行应用程序并在输入字段中输入内容时,Property 类型的 Value 属性仍然是 null,这就是我卡住的地方
我也尝试调试setter,结果它没有到达那里,所以运行时绑定存在问题,这是'作为他们的例子'这行代码
textBox.SetBinding(TextBox.TextProperty, GetValueBinding(TextProperty));
任何帮助将不胜感激:)
编辑:
为了更清楚,我有一个名为MainAppPage的页面
和标记控件,后面的代码称为ContentControl
简单地说,MainAppPage 将List<Property> 传递给ContentControl 在MainAppPage 中使用它
<controls:ContentControl Instance="{value: ClassObject}"/> 然后ContentControl 开始遍历List<Property> 并创建派生自InputField 的HtmlGenericControl
InputField 在ContentControl 中的渲染就像一个魅力
唯一不起作用的是绑定,所以同样,如何将 Property.Value 绑定到 InputField.Text 以便用户在 UI 中发生的任何更改都反映在 Property.Value 之后 InputField 像任何其他 MVVM 模式一样失去焦点?
【问题讨论】:
标签: c# asp.net mvvm binding dotvvm