簡體   English   中英

mvvmcross Windows Phone 8自定義綁定

[英]mvvmcross windows phone 8 custom binding

我想做一個自定義綁定。 當ServerViewModel中的屬性更改時,我想在相應的ServerView中調用一個函數。 基於N-28,我可以在Android上執行此操作,但如何在Windows Phone 8上執行此操作?

核心:ServerViewModel.cs

private bool _textUpdate;
public bool TextUpdate
{
  get { return _textUpdate; }
  set
  {
 _  textUpdate = value;
    if (value) {
      RaisePropertyChanged(() => TextUpdate);
    }
  }
}

Android:Setup.cs:

protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
  registry.RegisterCustomBindingFactory<ServerView>(
      "SERVERVIEW",
      dcs => new ServerViewTargetBinding(dcs));
  base.FillTargetFactories(registry);

Android ServerViewTargetBinding.cs

public class ServerViewTargetBinding : MvxAndroidTargetBinding
{
  public ServerViewTargetBinding(ServerView target)
  : base(target)
  {
    //only one way target.MyCountChanged += TargetOnMyCountChanged;
  }

  protected override void SetValueImpl(object target, object value)
  {
    throw new NotImplementedException();
  }

  public override void SetValue(object value)
  {
    var target = Target as ServerView;

    if (target == null)
     return;

    target.ServerCallback((bool)value);
  }

  public override Type TargetType
  {
    get { return typeof(ServerView); }
  }

  public override MvxBindingMode DefaultMode
  {
    get { return MvxBindingMode.OneWay; }
  }
}

Android ServerView.cs

set.Bind(this).For("SERVERVIEW").To(vm => vm.TextUpdate);

public void ServerCallback(bool value)
{
  if (_isUpdating)
    return;

  _isUpdating = true;
  try{
    _text.SetText(value);
  }
  finally{
    _isUpdating = false;
  }
}

如果要在Windows中使用mvvmcross綁定(包括自定義綁定),則需要包括bindingex軟件包-有關WindowsStore中的示例,請參見n = 35視頻(電話類似)。 完成之后,您可以添加自定義綁定,並在xaml的Bi.nd語句中使用它們。

另外,您也許可以使用附加屬性來達到所需的效果-請參閱http://msdn.microsoft.com/zh-cn/library/ms749011(v=vs.110).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM