【发布时间】:2014-01-23 00:21:39
【问题描述】:
我想做一个自定义绑定。 当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);
}
}
}
安卓: 设置.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;
}
}
【问题讨论】:
标签: c# windows-phone-8 binding mvvmcross