【问题标题】:MvvmCross - How to bind UIView.Layer.AnyProperty (Xamarin.iOS) to a property on a viewmodel?MvvmCross - 如何将 UIView.Layer.AnyProperty (Xamarin.iOS) 绑定到视图模型上的属性?
【发布时间】:2014-10-07 15:02:13
【问题描述】:

我在一个名为 BorderColor 的字符串类型的视图模型上有一个属性,我尝试将它绑定到 UIView.Layer.BorderColor,这是绑定语法:

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,没有运气。

【问题讨论】:

    标签: ios xamarin.ios xamarin mvvmcross


    【解决方案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 系列中的示例)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2010-12-02
      • 2023-03-20
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多