2014-02-02 3 views
0

Я хотел бы знать, как связать Прогресс UIProgressView.MvvmCross: индикатор выполнения привязки в iOS

Имея это в дизайне:

[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); } 
} 

UPDATE AS ЗАПРОШЕННЫЙ:
- У меня есть iPhone 4 с iOS7.
- Я попытался привязать индикатор IosProgress к ярлыку, отлично работает, проверив с 3 значениями 0,333333, 0,666667 и 1, показав на этикетке.

Я создал два экрана для вас.

  1. Это показывает значение индикатора IosProgress во время отладки с начальным значением, указанным в качестве конструктора, 0.1f также сообщения отладки. enter image description here

  2. Это показывает в 3 версии я пробовал, имея те же ошибочные результаты, отлаживать сообщение для текущего: enter image description here

Спасибо!

+0

Глядя на документ и intellisense, я думаю, что «Прогресс» должен автоматически связываться сам по себе. Какие сообщения вы получаете в трассировке при попытке использовать 'set.Bind (ProgressIndicator) .For (p => p.Progress) .To (vm => vm.IosProgress);'. Это может помочь, если вы можете включить какое-то устройство iOS и версию, на которой вы работаете, и если вы также можете связать IosProgress с текстом 'UILabel', чтобы проверить, что он меняется, как вы ожидаете. – Stuart

ответ

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(); 
    } 

Это работало точно так, как ожидается, на тренажере iOS7 iPhone.

Единственная проблема, с которой я столкнулся, заключалась в том, что имущество ViewModel вышло за пределы 0.0f до 1.0f.

+0

'SeekProperty/100' =>' Mind = Blown * 100' –

Смежные вопросы