从阅读你的问题,我想你说的是视图本身具有字符串类型的字段...
您的代码:
this.AddBindings(
new Dictionary<object, string>()
{
{ StringTemp, "{'Text':{'Path':'AboutText'}}" },
});
试图将StringTemp
所指的对象上的属性Text
绑定到ViewModel上的任何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 name属性(
AboutText
)是将成为价值的源泉属性的名称
请注意,Mvx使用属性 - 不是字段 - 所以private string StringTemp {get;set;}
是可绑定的,但private string StringTemp;
不是。
你也可以做这个字符串参考双向绑定,如果你想......但你需要设置一些自定义的绑定信息,这样做 - 那里将需要一些触发的事件,并抓获为了更新视图模型(我会留给另一天!)
对于有些情况下直接结合是你在找不什么,那么你总是可以订阅的PropertyChanged和处理的通知更详细的代码...例如:
ViewModel.PropertyChanged += (s,e) =>
{
if (e.PropertyName == "AboutText")
{
// do something complicated here with the new ViewModel.AboutText value
}
};
...但我个人倾向于避免这种类型的代码,我可以...
你是什么意思“但是,它不会让我,我的观点的字符串变量视图模型的属性绑定在一样的方法。” - 什么是你的“视图的字符串变量”?我想我问“什么是TextFieldTemp?” – Stuart
@Stuart - TextFieldTemp是我在IB中添加的UITextField,我已将其绑定到ViewModel的属性。但是,我更愿意绑定到视图的实例变量之一,因为我想在显示它之前对值进行操作。 – SomaMan
我已经回答了...回复此评论 - 您也可以考虑使用ValueConverter作为“做事情” - 或者您也可以考虑手工制作事件处理程序 - 我将其添加到答案中。 – Stuart