通过阅读您的问题,我认为您所说的是 View 本身具有字符串类型的字段...
你的代码:
this.AddBindings(
new Dictionary<object, string>()
{
{ StringTemp, "{'Text':{'Path':'AboutText'}}" },
});
正在尝试将所Text
引用的对象上的属性绑定到 ViewModelStringTemp
中的任何内容。AboutText
要设置StringTemp
字符串本身,您应该能够使用以下方式绑定到它:
this.AddBindings(
new Dictionary<object, string>()
{
{ this, "{'StringTemp':{'Path':'AboutText'}}" },
});
只是为了解释: 中的部分{ this, "{'StringTemp':{'Path':'AboutText'}}" }
,这些可以被认为是{ TargetObject, "{'TargetPropertyName':{'Path':'SourcePropertyName'}}" }
:
- TargetObject (
this
) 是您要设置属性值的对象
- TargetPropertyName (
StringTemp
) 是您要设置的名称属性
- SourcePropertyName (
AboutText
) 是将作为值的来源的属性的名称
请注意,Mvx 使用属性——而不是字段——所以private string StringTemp {get;set;}
是可绑定的,但private string StringTemp;
不是。
如果您愿意,您也可以为此字符串引用进行双向绑定...但是您需要设置一些自定义绑定信息来执行此操作 - 需要触发和捕获一些事件才能更新 ViewModel (我将把它留到另一天!)
对于直接绑定不是您想要的情况,您可以随时订阅 PropertyChanged 并以更详细的代码处理通知......例如:
ViewModel.PropertyChanged += (s,e) =>
{
if (e.PropertyName == "AboutText")
{
// do something complicated here with the new ViewModel.AboutText value
}
};
...但我个人倾向于尽可能避免使用这种类型的代码...