MvvmCross:iOS中的绑定进度条

时间:2014-02-02 17:49:40

标签: ios xamarin.ios mvvmcross

我想知道如何绑定 UIProgressView的Progress 属性。

在设计中有这个:

[Outlet]
MonoTouch.UIKit.UIProgressView ProgressIndicator { get; set; }

我尝试了以下内容:

set.Bind(ProgressIndicator).For(p => p.Progress).To(vm => vm.IosProgress);
set.Bind(ProgressIndicator).For("Progress").To(vm => vm.IosProgress);

在ViewModel中我有:

private float _iosProgress;
public float IosProgress
{
    get { return _iosProgress; }
    set { _iosProgress = value; RaisePropertyChanged(()=>IosProgress); }
}

根据要求更新:
  - 我有一部带iOS7的iPhone 4   - 我试图将IosProgress指示器绑定到Label,运行完美,经过测试后,标签中显示了3个值,0.33333,0,666667和1。

我为你创建了两个屏幕截图。

  1. 这显示了调试期间IosProgress指标的值,构造函数中给出的初始值为0.1f,也是调试消息。 enter image description here

  2. 这显示了我尝试的3个版本,具有相同的错误结果,当前的调试消息: enter image description here

  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

我刚尝试使用SeekView https://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/ApiExamples UIProgressView中的 public override void ViewDidLoad() { base.ViewDidLoad(); var label = new UILabel(new RectangleF(10, 100, 100, 30)); label.Text = "Slide me:"; Add(label); var seek = new UISlider(new RectangleF(110, 100, 200, 30)); seek.MinValue = 0; seek.MaxValue = 100; Add(seek); var pro = new UIProgressView(new RectangleF(110, 130, 200, 30)); Add(pro); var set = this.CreateBindingSet<SeekView, SeekViewModel>(); set.Bind(seek).To(vm => vm.SeekProperty); set.Bind(pro).For(v => v.Progress).To("SeekProperty / 100"); set.Apply(); }

ViewModel

这在iOS7 iPhone模拟器上完全符合预期。

我遇到的唯一问题是0.0f属性超出1.0f到{{1}}范围。