2015-02-07 85 views
0

從來就創建了綁定,像斯圖爾特告訴記者,在這個帖子:MvvmCross - How to bind UIView.Layer.AnyProperty (Xamarin.iOS) to a property on a viewmodel?MvvmCross:iOS設備上綁定警告

這行之有效的模擬器,而不是iOS設備上。我已經添加了LinkerPleaseInclude.cs,但這沒有改變。

綁定到BorderWidth完美地工作,綁定到BorderColor顯示一個警告。

LinkerPleaseInclude.cs:

public class LinkerPleaseInclude 
{ 
    public void Include(UIButton uiButton) 
    { 
     uiButton.TouchUpInside += (s, e) => 
            uiButton.SetTitle(uiButton.Title(UIControlState.Normal), UIControlState.Normal); 
    } 

    public void Include(UIBarButtonItem barButton) 
    { 
     barButton.Clicked += (s, e) => 
          barButton.Title = barButton.Title + ""; 
    } 

    public void Include(UITextField textField) 
    { 
     textField.Text = textField.Text + ""; 
     textField.EditingChanged += (sender, args) => { textField.Text = ""; }; 
    } 

    public void Include(UITextView textView) 
    { 
     textView.Text = textView.Text + ""; 
     textView.Changed += (sender, args) => { textView.Text = ""; }; 
    } 

    public void Include(UILabel label) 
    { 
     label.Text = label.Text + ""; 
    } 

    public void Include(UIImageView imageView) 
    { 
     imageView.Image = new UIImage(); 
    } 

    public void Include(UIDatePicker date) 
    { 
     date.Date = date.Date.AddSeconds(1); 
     date.ValueChanged += (sender, args) => { date.Date = DateTime.MaxValue.ToNSDate(); }; 
    } 

    public void Include(UISlider slider) 
    { 
     slider.Value = slider.Value + 1; 
     slider.ValueChanged += (sender, args) => { slider.Value = 1; }; 
    } 

    public void Include(UISwitch sw) 
    { 
     sw.On = !sw.On; 
     sw.ValueChanged += (sender, args) => { sw.On = false; }; 
    } 

    public void Include(INotifyCollectionChanged changed) 
    { 
     changed.CollectionChanged += (s,e) => { var test = string.Format("{0}{1}{2}{3}{4}", e.Action,e.NewItems, e.NewStartingIndex, e.OldItems, e.OldStartingIndex); } ; 
    } 
} 

我的綁定代碼:

bindingSet.Bind(this.MyUITextField.Layer) 
       .For(x => x.BorderColor) 
       .To(x => x.MyViewModelProperty.IsValid) 
       .WithConversion("ValidationStyleBorderColor"); 
bindingSet.Bind(this.MyUITextField.Layer) 
       .For(x => x.BorderWidth) 
       .To(x => x.MyViewModelProperty.IsValid) 
       .WithConversion("ValidationStyleBorderWidth"); 
bindingSet.Apply(); 

我的轉換器:

public class ValidationStyleBorderColorValueConverter : MvxValueConverter<bool, CGColor> 
{ 
    protected override CGColor Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value == true ? Themes.Default.HighlightColor.CGColor : Themes.Default.ErrorColor.CGColor; 
    } 
} 

而且警告:MvxBind:警告:22,91無法創建綁定BorderColor for MyViewModelProperty.IsValid的目標綁定

我在做什麼錯?

+0

是否還有其他跟蹤文本?例如在發佈警告之前? – Stuart 2015-02-08 09:29:29

+0

不,只是。 mvx:診斷:23,55顯示視圖模型MyViewModel TouchNavigation:診斷:23,55請求導航 MvxBind:警告:24,20無法創建目標綁定以綁定BorderColor for MyViewModel.IsValid – 2015-02-09 09:00:37

+0

沒有創意?仍然有這個警告.. – 2015-02-22 20:22:25

回答

1

正如斯圖爾特告訴的,包括LinkerPleaseInclude中的Border屬性所做的。