MvvmCross - 如何将UIView.Layer.AnyProperty(Xamarin.iOS)绑定到viewmodel上的属性?

时间:2014-10-07 15:02:13

标签: ios xamarin.ios xamarin mvvmcross

我在视图模型上有一个名为BorderColor的类型为string的属性,我尝试将其绑定到UIView.Layer.BorderColor,这是绑定sytax:

set.Bind (this.MyUIView).For ("Layer.BorderColor").To (t => t.BorderColor).WithConversion (new StringToColorConverter { ToCGColor = true });

它不起作用,但是,如果我说直接在UIView上绑定到BackgroundColor属性,它就像一个魅力。有人知道MvvmCross是否支持绑定到Layer属性?

我尝试了目标路径的不同变体,例如“Layer.BorderColor”,并强烈输入t => Layer.BorderColor,没有运气。

1 个答案:

答案 0 :(得分:1)

来自https://github.com/MvvmCross/MvvmCross/wiki/Databinding#fluent

的流畅绑定语法的描述
  

流畅的语法提供了一种创建绑定的C#方式。

     

此语法通常使用CreateBindingSet帮助程序完成。

     

语法包括:

       Bind($ViewObject$) 
     

其中$ ViewObject $是绑定的视图目标。

       For(v => v.$ViewProperty$) 
     

其中$ ViewProperty $是视图上绑定的属性。

所以...你可以尝试使用:

     set.Bind (this.MyUIView.Layer).For ("BorderColor")...

只要没有人更改Layer本身,这应该有效 - 如果你需要更复杂的绑定,那么你需要创建一个自定义绑定(参见N + 1系列中的例子)