Пример #1
0
        public QuickCheckbox Checkbox(Expression <Func <bool> > memberAccessExpr, string name = null)
        {
            var memberInfo = ReflectHelper.AnalyzeMember(memberAccessExpr);
            var label      = ReflectHelper.GetLabelInfo(memberInfo.TopmostMember);
            var desc       = ReflectHelper.GetDescriptionInfo(memberInfo.TopmostMember);
            var checkbox   = new QuickCheckbox(parent: CurrentParent, name: name ?? memberInfo.TopmostMember.Name)
            {
                Label   = label,
                Tooltip = desc,
            };

            checkbox.IsChecked.Bind(memberAccessExpr);
            return(checkbox);
        }
Пример #2
0
        public QuickDropdown <T> Dropdown <T>(Expression <Func <T> > memberAccessExpr, IEnumerable <DropdownChoice <T> > choices, string name = null)
        {
            var memberInfo = ReflectHelper.AnalyzeMember(memberAccessExpr);
            var label      = ReflectHelper.GetLabelInfo(memberInfo.TopmostMember);
            var desc       = ReflectHelper.GetDescriptionInfo(memberInfo.TopmostMember);
            var dropdown   = new QuickDropdown <T>(CurrentParent, name: name ?? memberInfo.TopmostMember.Name)
            {
                Options     = choices.ToArray(),
                LabelText   = label,
                TooltipText = desc,
            };

            dropdown.SelectedValue.Bind(memberAccessExpr);
            return(dropdown);
        }
Пример #3
0
        /// <summary>
        /// Creates a BindingValue from an expression that accesses a property or field.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expr"></param>
        /// <param name="notifier"></param>
        /// <returns></returns>
        public static BindingValue <T> Member <T>(Expression <Func <T> > expr, INotifyPropertyChanged notifier = null)
        {
            var accessor = ReflectHelper.AnalyzeMember(expr);
            var instance = accessor.InstanceGetter();


            var instanceName = ReflectHelper.TryGetName(instance);

            notifier = notifier ?? accessor.InstanceGetter() as INotifyPropertyChanged;
            var bindingValue = new BindingValue <T>(accessor.Setter, accessor.Getter, $"{instanceName ?? "?"}.{accessor.TopmostMember.Name}");

            if (notifier != null)
            {
                notifier.PropertyChanged += (sender, e) => {
                    if (e.PropertyName == accessor.TopmostMember.Name)
                    {
                        bindingValue.NotifyChange();
                    }
                };
            }
            return(bindingValue);
        }