Xamarin.ios下的MVVM光线绑定

在这个周内,博客帖子让我们看看我们如何能够实现绑定 MVVM光 在iOS下使用与xamarin的故事板。因此,允许创建一个具有标签,按钮和文本输入字段的简单应用程序。

mvvmlightiosbinding

标签将显示在文本输入字段中输入的先前消息,并用按钮提交。整个UI都是在故事板设计人员中设计的,然后在后面的代码中连接到ViewModel。

向ViewModel接线视图

在iOS下,必须在代码中定义绑定,因此对于从ViewModel更新的标签,绑定如下所示:

_textLabelBinding = this.SetBinding (    () => Vm.TheResponse,    () => TextLabel.Text);

该按钮通过命令绑定连线:

SubmitTextButton.SetCommand("TouchUpInside", Vm.SubmitTextCommand);

当涉及文本字段时,我们必须将自己注册到一个我们被调用的UI控件的事件。然后我们将文本字段的值传递给我们的 MainViewModel. i.e. the property.

_textFieldBinding = this.SetBinding (() => EntryTextField.Text).ObserveSourceEvent ("EditingDidEnd").WhenSourceChanges (() => Vm.TheInput = EntryTextField.Text);

因此,您可以看到在iOS下的ViewModels在Xamarin.Forms,Android或Windows下,使用ViewModels有些工作要做有点更多的工作要做 - 但它可以完成 微笑

在ViewModel上偷看

MainViewModel. 非常直向前,与ViewModels不同,您可以使用适用于Windows应用程序的视图。通用Windows应用程序。

public class MainViewModel : ViewModelBase{    private string _theInput;    private string _theResponse;    private RelayCommand _submitTextCommand;    public MainViewModel ()    {        Names = new ObservableCollection<string>();        SubmitTextCommand = new RelayCommand (handlesubmittext command., () => CanExecuteSubmitText);        CanExecuteSubmitText = true;        TheResponse = "Awaiting your input";    }    public string TheInput {        get {            return _theInput;        }        set {            _theInput = value;            RaisePropertyChanged (() => TheInput);        }    }    public string TheResponse {        get {            return _theResponse;        }        set {            if (value == _theResponse) return;            _theResponse = value;            RaisePropertyChanged (() => TheResponse);        }    }    public RelayCommand SubmitTextCommand {        get {            return _submitTextCommand;        }        private set {            _submitTextCommand = value;        }    }    public bool CanExecuteSubmitText {        get;        set;    }    public ObservableCollection<string> Names { get; set; }    private void handlesubmittext command. ()    {        CanExecuteSubmitText = false;        TheResponse = "You just entered: " + TheInput;        CanExecuteSubmitText = true;    }}

调用该命令时,我们只需注册一个处理程序,就在示例代码的情况下 handlesubmittext command. 方法。您也可以使用set the canexecute. 财产的财产 Icommand. 它将阻止命令重新执行,而处理程序仍在从用户呼叫上工作。

结论

所以你可以看到MVVM光线框架 Laurent Bugnion. 可用于使用Storybaords下实现iOS下的MVVM客户端体系结构。与标准方法的最大差异是开发人员必须处理接线并确保在对UI的新值反应的情况下将绑定附加到相应的事件。另外,代码与您希望从Windows实现中的预期相同。

您可以找到示例代码 GitHub..

参考

Laurent Bugnion.s Xamarin. 进化谈话.

MVVM光和Xamarin.Forms入门 邮政.

Updated: