コード例 #1
0
        /// <summary>
        /// Creates a custom binding for the <see cref="TextView"/>.
        /// Remember to call <see cref="IMvxViewBindingManager.UnbindView"/> on the view after you're done
        /// using it.
        /// </summary>
        public static void BindToText(this TextView view, INotifyPropertyChanged source,
                                      string sourcePropertyName, IMvxValueConverter converter = null,
                                      object converterParameter = null)
        {
            var activity = view.Context as IMvxBindingActivity;
            if (activity == null)
                return;

            var description = new MvxBindingDescription
            {
                SourcePropertyPath = sourcePropertyName,
                Converter = converter,
                ConverterParameter = converterParameter,
                TargetName = "Text",
                Mode = MvxBindingMode.OneWay
            }.ToEnumerable();

            var tag = view.GetBindingTag ();
            if (tag != null) {
                MvxBindingTrace.Trace(
                    MvxTraceLevel.Warning,
                    "Replacing binding tag for a TextView " + view.Id);
            }

            view.SetBindingTag (new MvxViewBindingTag (description));
            activity.BindingManager.BindView (view, source);
        }
コード例 #2
0
        public IMvxTargetBinding CreateBinding(object target, MvxBindingDescription description)
        {
            var factory = FindSpecificFactory(target.GetType(), description.TargetName);
            if (factory != null)
                return factory.CreateBinding(target, description);

            var targetPropertyInfo = target.GetType().GetProperty(description.TargetName);
            if (targetPropertyInfo != null)
            {
                return new MvxPropertyInfoTargetBinding(target, targetPropertyInfo);
            }

            var targetEventInfo = target.GetType().GetEvent(description.TargetName);
            if (targetEventInfo != null)
            {
#warning Handle other event types here - possibly another lookup table so people can register their own?
                if (targetEventInfo.EventHandlerType == typeof(EventHandler))
                    return new MvxEventHandlerEventInfoTargetBinding(target, targetEventInfo);
            }

            return null;
        }
コード例 #3
0
        public IMvxTargetBinding CreateBinding(object target, MvxBindingDescription description)
        {
            var targetPropertyInfo = target.GetType().GetProperty(description.TargetName);
            if (targetPropertyInfo != null)
            {
                try
                {
                    return _bindingCreator(target, targetPropertyInfo);
                }
                catch (ThreadAbortException)
                {
                    throw;
                }
                catch (Exception exception)
                {
                    MvxBindingTrace.Trace(
                                            MvxTraceLevel.Error,
"Problem creating target binding for {0} - exception {1}", _targetType.Name, exception.ToString());
                }
            }

            return null;
        }
 public IMvxTargetBinding CreateBinding(object target, MvxBindingDescription description)
 {
     return _innerFactory.CreateBinding(target, description);
 }
コード例 #5
0
        protected virtual View CreateSimpleView()
        {
            var inflater = LayoutInflater.FromContext (Context);
            var view = inflater.Inflate (SimpleViewLayoutId, null);
            
            // Create manual binding:
            var bindingDesc = new MvxBindingDescription(
                "Text",
                "",
                MvxStringValueConverter.Instance,
                null,
                string.Empty,
                MvxBindingMode.Default).ToEnumerable();
            view.SetBindingTag(new MvxViewBindingTag(bindingDesc));

            return view;
        }