Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save softlion/d9765282b80ec08f344e to your computer and use it in GitHub Desktop.
Save softlion/d9765282b80ec08f344e to your computer and use it in GitHub Desktop.
MvxNetworkActivityIndicatorTargetBinding for mvvmcross iOS
public abstract class MvxTargetBinding2 : MvxBinding, IMvxTargetBinding
{
private readonly object _target;
protected MvxTargetBinding2(object target)
{
_target = target;
}
protected object Target
{
get { return _target; }
}
public virtual void SubscribeToEvents()
{
// do nothing by default
}
protected virtual void FireValueChanged(object newValue)
{
var handler = ValueChanged;
if (handler != null)
handler(this, new MvxTargetChangedEventArgs(newValue));
}
public abstract Type TargetType { get; }
public abstract void SetValue(object value);
public event EventHandler<MvxTargetChangedEventArgs> ValueChanged;
public abstract MvxBindingMode DefaultMode { get; }
}
public class MvxNetworkActivityIndicatorTargetBinding : MvxTargetBinding2
{
public override MvxBindingMode DefaultMode
{
get { return MvxBindingMode.OneWay; }
}
public static void Register(IMvxTargetBindingFactoryRegistry registry)
{
registry.RegisterFactory(new MvxCustomBindingFactory<UIView>("NetworkActivityIndicator", source => new MvxNetworkActivityIndicatorTargetBinding(source)));
}
public MvxNetworkActivityIndicatorTargetBinding(UIView source) : base(source)
{
}
public override Type TargetType
{
get { return typeof(bool); }
}
public override void SetValue(object value)
{
if (!(value is bool))
return;
UIApplication.SharedApplication.NetworkActivityIndicatorVisible = (bool)value;
}
}
//In mvvmcross setup.cs
protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
base.FillTargetFactories(registry);
MvxNetworkActivityIndicatorTargetBinding.Register(registry);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment