Я хочу сделать пользовательскую привязку. Когда свойство в ServerViewModel изменяется, я хочу вызвать функцию в соответствующем ServerView. На основе N-28 я могу сделать это для Android, но как это сделать для телефона Windows 8?mvvmcross windows phone 8 custom binding
Core: 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;
}
}
я могу видеть, Вы можете сделать ValueConverter вызов, но как Вы можете сделать вызов функции обратного вызова, из ViewModel к просмотру ? – user2831196
я могу сделать все вызов, как в Android, за исключением защищенных отменяют недействительные FillTargetFactories (IMvxTargetBindingFactoryRegistry реестр) { registry.RegisterCustomBindingFactory ( "ServerView", РСА => нового ServerViewTargetBinding (РС)); base.FillTargetFactories (реестр); } –
user2831196