コード例 #1
0
 public static void RegisterButtonMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIControl.ClickEvent.Override <UIButton>());
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIButton.Title,
                                                                (info, button) => button.CurrentTitle,
                                                                (info, button, arg3) => button.SetTitle(arg3, UIControlState.Normal)));
 }
コード例 #2
0
 public static void RegisterDataGridViewMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Object.ItemsSource.Override <DataGridView>());
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.Object.ItemsSource.Override <DataGridView>(),
                                                                (info, view) => view.DataSource as IEnumerable, (info, view, value) =>
     {
         view.DataSource = value;
         view.Refresh();
     }, nameof(DataGridView.DataSourceChanged)));
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.DataGridView.SelectedItem,
                                                                GetSelectedItemDataGridView, SetSelectedItemDataGridView, (info, view, arg3) =>
     {
         arg3 = arg3.ToWeakEventListener();
         EventHandler handler = null;
         handler = (sender, args) =>
         {
             var gridView = (DataGridView)sender;
             Action <DataGridView, IEventListener, EventHandler> action =
                 (dataGridView, listener, eventHandler) =>
             {
                 if (!listener.TryHandle(dataGridView, EventArgs.Empty))
                 {
                     dataGridView.CurrentCellChanged -= eventHandler;
                 }
             };
             //To prevent this exception 'Operation not valid because it results in a reentrant call to the SetCurrentCellAddressCore function'
             gridView.BeginInvoke(action, gridView, arg3, handler);
         };
         view.CurrentCellChanged += handler;
         return(WeakActionToken.Create(view, handler,
                                       (gridView, eventHandler) => gridView.CurrentCellChanged -= eventHandler));
     }));
 }
コード例 #3
0
 public static void RegisterStringElementMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <StringElement>(nameof(StringElement.Value));
     MemberProvider.Register(AttachedBindingMember.CreateMember <StringElement, string>(nameof(StringElement.Value),
                                                                                        (info, element) => element.Value,
                                                                                        (info, element, arg3) =>
     {
         element.Value = arg3;
         element.Reload();
     }));
     MemberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.StringElement.TappedEvent,
                                                               (info, element, arg3) =>
     {
         var weakWrapper          = arg3.ToWeakWrapper();
         IDisposable unsubscriber = null;
         Action action            = () =>
         {
             if (!weakWrapper.EventListener.TryHandle(weakWrapper.EventListener, EventArgs.Empty))
             {
                 unsubscriber.Dispose();
             }
         };
         unsubscriber = WeakActionToken.Create(element, action,
                                               (stringElement, nsAction) => stringElement.Tapped -= nsAction);
         element.Tapped += action;
         return(unsubscriber);
     }));
 }
コード例 #4
0
        public static void RegisterDialogEntryElementMembers()
        {
            var field = typeof(EntryElement).GetField("entry", BindingFlags.NonPublic | BindingFlags.Instance);

            if (field != null && field.FieldType == typeof(UITextField))
            {
                var getEntryField = ServiceProvider.ReflectionManager.GetMemberGetter <UITextField>(field);
                TouchBindingErrorProvider.TryGetEntryField = target =>
                {
                    var element = target as EntryElement;
                    if (element != null)
                    {
                        target = getEntryField(element);
                    }
                    return(target);
                };
            }

            BindingBuilderExtensions.RegisterDefaultBindingMember <EntryElement>(nameof(EntryElement.Value));
            var member = MemberProvider.GetBindingMember(typeof(EntryElement), nameof(EntryElement.Changed), true, false);

            if (member != null)
            {
                MemberProvider.Register(AttachedBindingMember.CreateEvent <EntryElement>("ValueChanged",
                                                                                         (info, element, arg3) => member.TryObserve(element, arg3)));
            }
        }
コード例 #5
0
        public static void RegisterTableViewMembers()
        {
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewRowAnimation));
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewScrollPosition));

            BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.UseAnimations]    = BindingServiceProvider.TemplateMemberPriority + 1;
            BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.AddAnimation]     = BindingServiceProvider.TemplateMemberPriority + 1;
            BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.RemoveAnimation]  = BindingServiceProvider.TemplateMemberPriority + 1;
            BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.ReplaceAnimation] = BindingServiceProvider.TemplateMemberPriority + 1;
            BindingServiceProvider.BindingMemberPriorities[AttachedMembers.UITableView.ScrollPosition]   = BindingServiceProvider.TemplateMemberPriority + 1;

            BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIView.ItemsSource.Override <UITableView>());
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.AddAnimation));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.RemoveAnimation));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ReplaceAnimation));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ScrollPosition));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.UseAnimations));
            MemberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITableView.SelectedItemChangedEvent));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ItemsSource.Override <UITableView>(), TableViewItemsSourceChanged));
            MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UITableView.SelectedItem,
                                                                       GetTableViewSelectedItem, SetTableViewSelectedItem,
                                                                       (info, view, arg3) => (IDisposable)view.SetBindingMemberValue(AttachedMembers.UITableView.SelectedItemChangedEvent, arg3)));
            var itemTemplateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableView.ItemTemplateSelector, (view, args) => args.NewValue?.Initialize(view));

            MemberProvider.Register(itemTemplateMember);
            MemberProvider.Register(typeof(UITableView), AttachedMemberConstants.ItemTemplate, itemTemplateMember, true);
        }
コード例 #6
0
 public static void RegisterSegmentedControlMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <UISegmentedControl>(nameof(UISegmentedControl.SelectedSegment));
     MemberProvider.Register(AttachedBindingMember.CreateMember <UISegmentedControl, int>(nameof(UISegmentedControl.SelectedSegment),
                                                                                          (info, control) => (int)control.SelectedSegment,
                                                                                          (info, control, arg3) => control.SelectedSegment = arg3, nameof(UISegmentedControl.ValueChanged)));
 }
 public static void RegisterTwoStatePreferenceMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <TwoStatePreference>(nameof(TwoStatePreference.Checked));
     if (_valueChangedEventMember != null)
     {
         BindingServiceProvider.MemberProvider.Register(typeof(TwoStatePreference), "CheckedChanged", _valueChangedEventMember, true);
     }
 }
        public static void RegisterPreferenceMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Preference.Click);
            var changeMember = AttachedBindingMember.CreateEvent(AttachedMembers.Preference.ValueChangedEvent);

            BindingServiceProvider.MemberProvider.Register(changeMember);
            _valueChangedEventMember = changeMember;
        }
 public static void RegisterEditTextPreferenceMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <EditTextPreference>(nameof(EditTextPreference.Text));
     if (_valueChangedEventMember != null)
     {
         BindingServiceProvider.MemberProvider.Register(typeof(EditTextPreference), "TextChanged", _valueChangedEventMember, true);
     }
 }
コード例 #10
0
        public static void RegisterTextViewMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <UITextView>(nameof(UITextView.Text));
            NSNotificationCenter.DefaultCenter.AddObserver(UITextView.TextDidChangeNotification, TextDidChangeNotification);
            var memberInfo = AttachedBindingMember.CreateEvent(AttachedMembers.UITextView.TextChangedEvent, SetTextFieldTextChanged);

            AttachedBindingMember.TrySetRaiseAction(memberInfo, RaiseTextChanged);
            MemberProvider.Register(memberInfo);
        }
コード例 #11
0
 public static void RegisterComboBoxMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Object.ItemsSource.Override <ComboBox>());
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.Object.ItemsSource.Override <ComboBox>(),
                                                                (info, box) => box.DataSource as IEnumerable,
                                                                (info, box, value) => box.DataSource = value, nameof(ComboBox.DataSourceChanged)));
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.ComboBox.SelectedItem,
                                                                (info, box) => box.SelectedItem, (info, box, value) => box.SelectedItem = value, nameof(ComboBox.SelectedIndexChanged)));
 }
コード例 #12
0
        public static void RegisterTextBlockMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <TextBlock>(nameof(TextBlock.Text));
#if WINDOWS_UWP
            MemberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>(nameof(TextBlock.Text),
                                                                                           (info, box) => box.Text,
                                                                                           (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock));
#endif
        }
コード例 #13
0
        private static void Register(IBindingMemberProvider memberProvider)
        {
            Should.NotBeNull(memberProvider, "memberProvider");
            BindingBuilderExtensions.RegisterDefaultBindingMember <TextBlock>(() => t => t.Text);
            BindingBuilderExtensions.RegisterDefaultBindingMember <TextBox>(() => t => t.Text);
            BindingBuilderExtensions.RegisterDefaultBindingMember <Button>("Click");
            BindingBuilderExtensions.RegisterDefaultBindingMember <ComboBox>(() => c => c.ItemsSource);
            BindingBuilderExtensions.RegisterDefaultBindingMember <ListBox>(() => c => c.ItemsSource);
            BindingBuilderExtensions.RegisterDefaultBindingMember <ProgressBar>(() => c => c.Value);

            //UIElement
            memberProvider.Register(AttachedBindingMember.CreateMember <UIElement, bool>("Visible",
                                                                                         (info, view) => view.Visibility == Visibility.Visible,
                                                                                         (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember));
            memberProvider.Register(AttachedBindingMember.CreateMember <UIElement, bool>("Hidden",
                                                                                         (info, view) => view.Visibility != Visibility.Visible,
                                                                                         (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember));

            //FrameworkElement
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember));
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl));
#if SILVERLIGHT || WINDOWSCOMMON || WINDOWS_PHONE
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused,
                                                                           (info, control) => FocusManager.GetFocusedElement() == control, null, "LostFocus"));
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <Control, bool>(AttachedMemberConstants.Enabled,
                                                                  (info, control) => control.IsEnabled,
                                                                  (info, control, value) => control.IsEnabled = value));
#else
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused,
                                                                           (info, control) => control.IsFocused, null, "LostFocus"));
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Enabled,
                                                                           (info, control) => control.IsEnabled,
                                                                           (info, control, value) => control.IsEnabled = value, "IsEnabledChanged"));
#endif

            //TextBox
#if WINDOWSCOMMON
            memberProvider.Register(AttachedBindingMember.CreateMember <TextBox, string>("Text",
                                                                                         (info, box) => box.Text,
                                                                                         (info, box, value) => box.Text = value ?? string.Empty, "TextChanged"));

            //TextBlock
            memberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>("Text",
                                                                                           (info, box) => box.Text,
                                                                                           (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock));
#else
            //WebBrowser
            memberProvider.Register(AttachedBindingMember.CreateMember <WebBrowser, Uri>("Source",
                                                                                         (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3, "Navigated"));
#endif
        }
        public static void RegisterPreferenceGroupMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.PreferenceGroup.ItemsSource);
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemsSource, PreferenceGroupItemsSourceChanged));
            var templateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemTemplateSelector);

            MemberProvider.Register(templateMember);
            MemberProvider.Register(AttachedMemberConstants.ItemTemplate, templateMember);
        }
コード例 #15
0
        private static void Register(IBindingMemberProvider memberProvider)
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <Entry>(() => t => t.Text);
            BindingBuilderExtensions.RegisterDefaultBindingMember <Label>(() => t => t.Text);
            BindingBuilderExtensions.RegisterDefaultBindingMember <Button>("Clicked");
            BindingBuilderExtensions.RegisterDefaultBindingMember <ToolbarItem>("Clicked");
            BindingBuilderExtensions.RegisterDefaultBindingMember <ListView>(() => c => c.ItemsSource);
            BindingBuilderExtensions.RegisterDefaultBindingMember <ProgressBar>(() => c => c.Progress);

            //Element
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <Element, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember));
            memberProvider.Register(typeof(Element), "BindingContext", BindingMemberProvider.BindingContextMember, true);

            //VisualElement
            var visibleMember = memberProvider.GetBindingMember(typeof(VisualElement),
                                                                ToolkitExtensions.GetMemberName <VisualElement>(() => element => element.IsVisible), true, false);

            if (visibleMember != null)
            {
                memberProvider.Register(typeof(VisualElement), "Visible", visibleMember, true);
                memberProvider.Register(AttachedBindingMember.CreateMember <VisualElement, bool>("Hidden",
                                                                                                 (info, element) => !element.IsVisible, (info, element, arg3) => element.IsVisible = !arg3,
                                                                                                 (info, element, arg3) => visibleMember.TryObserve(element, arg3)));
            }
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <VisualElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl));

            memberProvider.Register(AttachedBindingMember.CreateMember <VisualElement, bool>(AttachedMemberConstants.Focused, (info, element) => element.IsFocused,
                                                                                             (info, element, arg3) =>
            {
                if (arg3)
                {
                    element.Focus();
                }
                else
                {
                    element.Unfocus();
                }
            }, (info, element, arg3) => BindingServiceProvider.WeakEventManager.Subscribe(element, "IsFocused", arg3)));

            var enabledMember = memberProvider.GetBindingMember(typeof(VisualElement),
                                                                ToolkitExtensions.GetMemberName <VisualElement>(() => element => element.IsEnabled), true, false);

            if (enabledMember != null)
            {
                memberProvider.Register(typeof(VisualElement), AttachedMemberConstants.Enabled, enabledMember, true);
            }

            //Toolbar item
            enabledMember = memberProvider.GetBindingMember(typeof(ToolbarItem), "IsEnabled", true, false);
            if (enabledMember != null)
            {
                memberProvider.Register(typeof(ToolbarItem), AttachedMemberConstants.Enabled, enabledMember, true);
            }
        }
コード例 #16
0
        private static void Register(IBindingMemberProvider memberProvider)
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <TextBlock>(nameof(TextBlock.Text));
            BindingBuilderExtensions.RegisterDefaultBindingMember <TextBox>(nameof(TextBox.Text));
            BindingBuilderExtensions.RegisterDefaultBindingMember <Button>(nameof(Button.Click));
            BindingBuilderExtensions.RegisterDefaultBindingMember <ComboBox>(nameof(ComboBox.ItemsSource));
            BindingBuilderExtensions.RegisterDefaultBindingMember <ListBox>(nameof(ListBox.ItemsSource));
            BindingBuilderExtensions.RegisterDefaultBindingMember <ProgressBar>(nameof(ProgressBar.Value));

            //UIElement
            memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIElement.Visible,
                                                                       (info, view) => view.Visibility == Visibility.Visible,
                                                                       (info, view, value) => view.Visibility = value ? Visibility.Visible : Visibility.Collapsed, ObserveVisiblityMember));
            memberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIElement.Hidden,
                                                                       (info, view) => view.Visibility != Visibility.Visible,
                                                                       (info, view, value) => view.Visibility = value ? Visibility.Collapsed : Visibility.Visible, ObserveVisiblityMember));

            //FrameworkElement
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, object>(AttachedMemberConstants.Parent, GetParentValue, SetParentValue, ObserveParentMember));
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, object>(AttachedMemberConstants.FindByNameMethod, FindByNameMemberImpl));
#if WINDOWS_UWP
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused,
                                                                           (info, control) => FocusManager.GetFocusedElement() == control, null, nameof(FrameworkElement.LostFocus)));
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <Control, bool>(AttachedMemberConstants.Enabled,
                                                                  (info, control) => control.IsEnabled,
                                                                  (info, control, value) => control.IsEnabled = value));
#else
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Focused,
                                                                           (info, control) => control.IsFocused, null, nameof(FrameworkElement.LostFocus)));
            memberProvider.Register(AttachedBindingMember
                                    .CreateMember <FrameworkElement, bool>(AttachedMemberConstants.Enabled,
                                                                           (info, control) => control.IsEnabled,
                                                                           (info, control, value) => control.IsEnabled = value, nameof(FrameworkElement.IsEnabledChanged)));
#endif

#if WINDOWS_UWP
            //TextBox
            memberProvider.Register(AttachedBindingMember.CreateMember <TextBox, string>(nameof(TextBox.Text),
                                                                                         (info, box) => box.Text,
                                                                                         (info, box, value) => box.Text = value ?? string.Empty, nameof(TextBox.TextChanged)));

            //TextBlock
            memberProvider.Register(AttachedBindingMember.CreateMember <TextBlock, string>(nameof(TextBlock.Text),
                                                                                           (info, box) => box.Text,
                                                                                           (info, box, value) => box.Text = value ?? string.Empty, ObserveTextTextBlock));
#else
            //WebBrowser
            memberProvider.Register(AttachedBindingMember.CreateMember <WebBrowser, Uri>(nameof(WebBrowser),
                                                                                         (info, browser) => browser.Source, (info, browser, arg3) => browser.Source = arg3, nameof(WebBrowser.Navigated)));
#endif
        }
コード例 #17
0
        public static void RegisterTextFieldMembers()
        {
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITextFieldViewMode));
            BindingBuilderExtensions.RegisterDefaultBindingMember <UITextField>(nameof(UITextField.Text));
            _textObserver = NSNotificationCenter.DefaultCenter.AddObserver(UITextField.TextFieldTextDidChangeNotification, TextDidChangeNotification);
            var memberInfo = AttachedBindingMember.CreateEvent(AttachedMembers.UITextField.TextChangedEvent, SetTextFieldTextChanged);

            AttachedBindingMember.TrySetRaiseAction(memberInfo, RaiseTextChanged);
            MemberProvider.Register(memberInfo);
        }
コード例 #18
0
        public static void RegisterToolbarItemMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <ToolbarItem>(nameof(ToolbarItem.Clicked));
            var enabledMember = MemberProvider.GetBindingMember(typeof(ToolbarItem), "IsEnabled", true, false);

            if (enabledMember != null)
            {
                MemberProvider.Register(typeof(ToolbarItem), AttachedMemberConstants.Enabled, enabledMember, true);
            }
        }
コード例 #19
0
        public static void RegisterSearchViewMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <SearchView>(nameof(SearchView.Query));
            var queryMember = AttachedBindingMember.CreateMember <SearchView, string>(nameof(SearchView.Query),
                                                                                      (info, searchView) => searchView.Query,
                                                                                      (info, searchView, value) => searchView.SetQuery(value, false), nameof(SearchView.QueryTextChange));

            MemberProvider.Register(queryMember);
            MemberProvider.Register(nameof(TextView.Text), queryMember);
        }
コード例 #20
0
 public static void RegisterToolStripItemMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <ToolStripButton>(nameof(ToolStripButton.Click));
     BindingBuilderExtensions.RegisterDefaultBindingMember <ToolStripMenuItem>(nameof(ToolStripMenuItem.Click));
     BindingBuilderExtensions.RegisterDefaultBindingMember <ToolStripItem>(nameof(ToolStripItem.Text));
     MemberProvider.Register(AttachedBindingMember.CreateMember <ToolStripItem, object>(AttachedMemberConstants.ParentExplicit,
                                                                                        GetParentToolStripItem, null, ObserveParentMemberToolStripItem));
     MemberProvider.Register(AttachedBindingMember.CreateMember <ToolStripItem, object>(AttachedMemberConstants.FindByNameMethod,
                                                                                        FindByNameMemberToolStripItem));
 }
コード例 #21
0
 public static void RegisterLabelMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <UILabel>(nameof(UILabel.Text));
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UILabel.TextSizeToFit,
                                                                (info, label) => label.Text,
                                                                (info, label, arg3) =>
     {
         label.Text = arg3;
         label.SizeToFit();
     }));
 }
コード例 #22
0
 public static void RegisterPickerViewMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.UIView.ItemsSource.Override <UIPickerView>());
     MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ItemsSource.Override <UIPickerView>(), PickerViewItemsSourceChanged));
     MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIPickerView.DisplayMemberPath, PickerViewDisplayMemberPathChangedChanged));
     MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIPickerView.SelectedItem,
                                                                (info, view) => GetOrAddPickerViewModel(view).SelectedItem,
                                                                (info, view, arg3) => GetOrAddPickerViewModel(view).SelectedItem = arg3, (info, view, arg3) =>
     {
         var viewModel = GetOrAddPickerViewModel(view);
         return(BindingServiceProvider.WeakEventManager.TrySubscribe(viewModel, nameof(MvvmPickerViewModel.SelectedItemChanged), arg3));
     }));
 }
コード例 #23
0
        private static void RegisterPreferenceMembers(IBindingMemberProvider memberProvider)
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.Preference.Click);
            BindingBuilderExtensions.RegisterDefaultBindingMember <TwoStatePreference>(nameof(TwoStatePreference.Checked));
            BindingBuilderExtensions.RegisterDefaultBindingMember <ListPreference>(nameof(ListPreference.Value));
            BindingBuilderExtensions.RegisterDefaultBindingMember <MultiSelectListPreference>(nameof(MultiSelectListPreference.Values));
            BindingBuilderExtensions.RegisterDefaultBindingMember <EditTextPreference>(nameof(EditTextPreference.Text));
            BindingBuilderExtensions.RegisterDefaultBindingMember(AttachedMembers.PreferenceGroup.ItemsSource);
            var changeMember = AttachedBindingMember.CreateEvent(AttachedMembers.Preference.ValueChangedEvent);

            BindingServiceProvider.MemberProvider.Register(changeMember);
            BindingServiceProvider.MemberProvider.Register(typeof(TwoStatePreference), "CheckedChanged", changeMember, true);
            BindingServiceProvider.MemberProvider.Register(typeof(MultiSelectListPreference), "ValuesChanged", changeMember, true);
            BindingServiceProvider.MemberProvider.Register(typeof(ListPreference), "EntryChanged", changeMember, true);
            BindingServiceProvider.MemberProvider.Register(typeof(MultiSelectListPreference), "EntryChanged", changeMember, true);
            BindingServiceProvider.MemberProvider.Register(typeof(EditTextPreference), "TextChanged", changeMember, true);


            //ListPreference
            memberProvider.Register(
                AttachedBindingMember.CreateMember <ListPreference, IEnumerable <string> >("EntryValues",
                                                                                           (info, preference) => preference.GetEntryValues(),
                                                                                           (info, preference, arg3) =>
                                                                                           preference.SetEntryValues(arg3 == null ? Empty.Array <string>() : arg3.ToArray())));
            memberProvider.Register(
                AttachedBindingMember.CreateMember <ListPreference, IEnumerable <string> >("Entries",
                                                                                           (info, preference) => preference.GetEntries(),
                                                                                           (info, preference, arg3) =>
                                                                                           preference.SetEntries(arg3 == null ? Empty.Array <string>() : arg3.ToArray())));

            //MultiSelectListPreference
            memberProvider.Register(
                AttachedBindingMember.CreateMember <MultiSelectListPreference, IEnumerable <string> >("EntryValues",
                                                                                                      (info, preference) => preference.GetEntryValues(),
                                                                                                      (info, preference, arg3) =>
                                                                                                      preference.SetEntryValues(arg3 == null ? Empty.Array <string>() : arg3.ToArray())));
            memberProvider.Register(
                AttachedBindingMember.CreateMember <MultiSelectListPreference, IEnumerable <string> >("Entries",
                                                                                                      (info, preference) => preference.GetEntries(),
                                                                                                      (info, preference, arg3) =>
                                                                                                      preference.SetEntries(arg3 == null ? Empty.Array <string>() : arg3.ToArray())));

            //PreferenceGroup
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemsSource, PreferenceGroupItemsSourceChanged));
            var templateMember = AttachedBindingMember.CreateAutoProperty(AttachedMembers.PreferenceGroup.ItemTemplateSelector);

            memberProvider.Register(templateMember);
            memberProvider.Register(AttachedMemberConstants.ItemTemplate, templateMember);
        }
コード例 #24
0
        private static void RegisterDialogMembers(IBindingMemberProvider memberProvider)
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <Element>(nameof(Element.Caption));
            memberProvider.Register(AttachedBindingMember.CreateMember <Element, string>(nameof(Element.Caption),
                                                                                         (info, element) => element.Caption,
                                                                                         (info, element, arg3) =>
            {
                element.Caption = arg3;
                element.Reload();
            }));
            memberProvider.Register(AttachedBindingMember.CreateMember <Element, object>(AttachedMemberConstants.ParentExplicit,
                                                                                         (info, element) => element.Parent, null));

            BindingBuilderExtensions.RegisterDefaultBindingMember <EntryElement>(nameof(EntryElement.Value));
            IBindingMemberInfo member = memberProvider.GetBindingMember(typeof(EntryElement), nameof(EntryElement.Changed), true, false);

            if (member != null)
            {
                memberProvider.Register(AttachedBindingMember.CreateEvent <EntryElement>("ValueChanged",
                                                                                         (info, element, arg3) => member.TryObserve(element, arg3)));
            }

            BindingBuilderExtensions.RegisterDefaultBindingMember <StringElement>(nameof(StringElement.Value));
            memberProvider.Register(AttachedBindingMember.CreateMember <StringElement, string>(nameof(StringElement.Value),
                                                                                               (info, element) => element.Value,
                                                                                               (info, element, arg3) =>
            {
                element.Value = arg3;
                element.Reload();
            }));
            memberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.StringElement.TappedEvent,
                                                                      (info, element, arg3) =>
            {
                var weakWrapper          = arg3.ToWeakWrapper();
                IDisposable unsubscriber = null;
                Action action            = () =>
                {
                    if (!weakWrapper.EventListener.TryHandle(weakWrapper.EventListener, EventArgs.Empty))
                    {
                        unsubscriber.Dispose();
                    }
                };
                unsubscriber = WeakActionToken.Create(element, action,
                                                      (stringElement, nsAction) => stringElement.Tapped -= nsAction);
                element.Tapped += action;
                return(unsubscriber);
            }));
        }
 public static void RegisterListPreferenceMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <ListPreference>(nameof(ListPreference.Value));
     if (_valueChangedEventMember != null)
     {
         BindingServiceProvider.MemberProvider.Register(typeof(ListPreference), "EntryChanged", _valueChangedEventMember, true);
     }
     MemberProvider.Register(
         AttachedBindingMember.CreateMember <ListPreference, IEnumerable <string> >("EntryValues",
                                                                                    (info, preference) => preference.GetEntryValues(),
                                                                                    (info, preference, arg3) =>
                                                                                    preference.SetEntryValues(arg3?.ToArray() ?? Empty.Array <string>())));
     MemberProvider.Register(
         AttachedBindingMember.CreateMember <ListPreference, IEnumerable <string> >("Entries",
                                                                                    (info, preference) => preference.GetEntries(),
                                                                                    (info, preference, arg3) =>
                                                                                    preference.SetEntries(arg3?.ToArray() ?? Empty.Array <string>())));
 }
コード例 #26
0
        public static void RegisterTableViewCellMembers()
        {
            BindingBuilderExtensions.RegisterDefaultBindingMember <UITableViewCell>(() => c => c.TextLabel.Text);
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellEditingStyle));
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellAccessory));
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellSelectionStyle));
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellSeparatorStyle));
            BindingServiceProvider.ResourceResolver.AddType(typeof(UITableViewCellStyle));
            var member = AttachedBindingMember.CreateEvent(AttachedMembers.UITableViewCell.AccessoryButtonTappedEvent);

            MemberProvider.Register(member);
            MemberProvider.Register("Click", member);
            MemberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITableViewCell.DeleteClickEvent));
            MemberProvider.Register(AttachedBindingMember.CreateEvent(AttachedMembers.UITableViewCell.InsertClickEvent));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableViewCell.TitleForDeleteConfirmation));
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UITableViewCell.EditingStyle));
            BindingServiceProvider.MemberProvider.Register(AttachedBindingMember.CreateMember <UITableViewCell, bool?>(nameof(UITableViewCell.Selected),
                                                                                                                       (info, target) => TableViewSourceBase.CellMediator.GetMediator(target, true).SelectedBind,
                                                                                                                       (info, cell, arg3) => TableViewSourceBase.CellMediator.GetMediator(cell, true).SelectedBind = arg3,
                                                                                                                       (info, cell, arg3) => TableViewSourceBase.CellMediator.GetMediator(cell, true).AddWithUnsubscriber(arg3)));
        }
コード例 #27
0
 public static void RegisterDateTimePickerMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <DateTimePicker>(nameof(DateTimePicker.Value));
     MemberProvider.Register(AttachedBindingMember.CreateMember <DateTimePicker, DateTime>(nameof(DateTimePicker.Value),
                                                                                           (info, picker) => picker.Value,
                                                                                           (info, picker, value) =>
     {
         if (value < picker.MinDate)
         {
             picker.Value = picker.MinDate;
         }
         else if (value > picker.MaxDate)
         {
             picker.Value = picker.MaxDate;
         }
         else
         {
             picker.Value = value;
         }
     }, nameof(DateTimePicker.ValueChanged)));
 }
コード例 #28
0
        public static void RegisterDialogElementMembers()
        {
            DefaultCollectionViewManager.InsertInternalHandler = (view, index, item) =>
            {
                var section = view as Section;
                if (section != null)
                {
                    section.Insert(index, (Element)item);
                    ((Element)item).RaiseParentChanged();
                    return(true);
                }

                var rootElement = view as RootElement;
                if (rootElement != null)
                {
                    rootElement.Insert(index, (Section)item);
                    ((Section)item).RaiseParentChanged();
                    return(true);
                }
                return(false);
            };
            DefaultCollectionViewManager.RemoveAtInternalHandler = (view, index) =>
            {
                var section = view as Section;
                if (section != null)
                {
                    var element = section[index];
                    section.Remove(index);
                    element.ClearBindingsRecursively(true, true);
                    element.DisposeEx();
                    return(true);
                }

                var rootElement = view as RootElement;
                if (rootElement != null)
                {
                    var element = rootElement[index];
                    rootElement.RemoveAt(index);
                    element.ClearBindingsRecursively(true, true);
                    element.DisposeEx();
                    return(true);
                }
                return(false);
            };
            DefaultCollectionViewManager.ClearInternalHandler = view =>
            {
                var section = view as Section;
                if (section != null)
                {
                    var elements = section.OfType <Element>().ToArray();
                    section.Clear();
                    foreach (var element in elements)
                    {
                        element.ClearBindingsRecursively(true, true);
                        element.DisposeEx();
                    }
                    return(true);
                }

                var rootElement = view as RootElement;
                if (rootElement != null)
                {
                    var elements = rootElement.ToArray();
                    rootElement.Clear();
                    foreach (var element in elements)
                    {
                        element.ClearBindingsRecursively(true, true);
                        element.DisposeEx();
                    }
                    return(true);
                }
                return(false);
            };

            BindingBuilderExtensions.RegisterDefaultBindingMember <Element>(nameof(Element.Caption));
            MemberProvider.Register(AttachedBindingMember.CreateMember <Element, string>(nameof(Element.Caption),
                                                                                         (info, element) => element.Caption,
                                                                                         (info, element, arg3) =>
            {
                element.Caption = arg3;
                element.Reload();
            }));
            MemberProvider.Register(AttachedBindingMember.CreateMember <Element, object>(AttachedMemberConstants.ParentExplicit,
                                                                                         (info, element) => element.Parent, null));
        }
コード例 #29
0
 public static void RegisterProgressViewMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <UIProgressView>(nameof(UIProgressView.Progress));
 }
コード例 #30
0
 public static void RegisterSliderMembers()
 {
     BindingBuilderExtensions.RegisterDefaultBindingMember <UISlider>(nameof(UISlider.Value));
 }