2014-01-23 119 views
0

我想做一個自定義綁定。 當ServerViewModel中的屬性發生更改時,我想在相應的ServerView中調用一個函數。 基於N-28我可以爲Android做到這一點,但如何爲Windows Phone 8做到這一點?mvvmcross windows phone 8自定義綁定

核心: ServerViewModel.cs

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

機器人: 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; 
    } 
} 

回答

0

如果你想使用mvvmcross綁定 - 包括自定義綁定 - 在Windows,那麼你需要包括bindingex包 - 看到N = 35的視頻在WindowsStore一個例子(手機類似)。完成之後,您可以添加自定義綁定,並在xaml中的Bi.nd語句中使用它們。

或者,你也許可以使用附加屬性來實現你需要的效果 - 見http://msdn.microsoft.com/en-us/library/ms749011(v=vs.110).aspx

+0

我可以看到你可以做一個valueconverter電話,但你怎麼可以做一個回調函數調用,從視圖模型到視圖? – user2831196

+0

我可以做所有的呼叫,因爲除了保護覆蓋無效FillTargetFactories(IMvxTargetBindingFactoryRegistry註冊表) { registry.RegisterCustomBindingFactory ( 「SERVERVIEW」, DCS =>新ServerViewTargetBinding(DCS))的Android; base.FillTargetFactories(registry); } – user2831196