public GridCellHandler(NativeComponentRenderer renderer, GridCellPlaceholderElement gridCellPlaceholderElementControl)
        {
            Renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
            GridCellPlaceholderElementControl = gridCellPlaceholderElementControl ?? throw new ArgumentNullException(nameof(gridCellPlaceholderElementControl));

            _parentChildManager = new ParentChildManager <XF.Grid, XF.View>(AddChildViewToParentGrid);
        }
예제 #2
0
        public ShellFlyoutHeaderHandler(NativeComponentRenderer renderer, DummyElement shellFlyoutHeaderDummyControl)
        {
            Renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
            ShellFlyoutHeaderDummyControl = shellFlyoutHeaderDummyControl ?? throw new ArgumentNullException(nameof(shellFlyoutHeaderDummyControl));

            _parentChildManager = new ParentChildManager <XF.Shell, XF.View>(SetShellFlyoutHeader);
        }
예제 #3
0
        public ShellHandler(NativeComponentRenderer renderer, XF.Shell shellControl) : base(renderer, shellControl)
        {
            ShellControl = shellControl ?? throw new ArgumentNullException(nameof(shellControl));

            // Add one item for Shell to load correctly. It will later be removed when the first real
            // item is added by the app.
            ShellControl.Items.Add(_dummyShellContent);

            // Add a dummy FlyoutHeader because it cannot be set dynamically later. When app code sets
            // its own FlyoutHeader, it will be set as the Content of this ContentView.
            // See https://github.com/xamarin/Xamarin.Forms/issues/6161 ([Bug] Changing the Shell Flyout Header after it's already rendered doesn't work)
            _flyoutHeaderContentView.IsVisible = false;
            ShellControl.FlyoutHeader          = _flyoutHeaderContentView;

            ShellControl.Navigated += (s, e) =>
            {
                if (NavigatedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(NavigatedEventHandlerId, null, e));
                }
            };
            ShellControl.Navigating += (s, e) =>
            {
                if (NavigatingEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(NavigatingEventHandlerId, null, e));
                }
            };
        }
 partial void Initialize(NativeComponentRenderer renderer)
 {
     RegisterEvent(
         eventName: "onappearing",
         setId: id => AppearingEventHandlerId   = id,
         clearId: () => AppearingEventHandlerId = 0);
     BaseShellItemControl.Appearing            += (s, e) =>
     {
         if (AppearingEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(AppearingEventHandlerId, null, e));
         }
     };
     RegisterEvent(
         eventName: "ondisappearing",
         setId: id => DisappearingEventHandlerId   = id,
         clearId: () => DisappearingEventHandlerId = 0);
     BaseShellItemControl.Disappearing            += (s, e) =>
     {
         if (DisappearingEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(DisappearingEventHandlerId, null, e));
         }
     };
 }
        partial void Initialize(NativeComponentRenderer renderer)
        {
            // Add one item for Shell to load correctly. It will later be removed when the first real
            // item is added by the app.
            ShellControl.Items.Add(_dummyShellContent);

            // Add a dummy FlyoutHeader because it cannot be set dynamically later. When app code sets
            // its own FlyoutHeader, it will be set as the Content of this ContentView.
            // See https://github.com/xamarin/Xamarin.Forms/issues/6161 ([Bug] Changing the Shell Flyout Header after it's already rendered doesn't work)
            _flyoutHeaderContentView.IsVisible = false;
            ShellControl.FlyoutHeader          = _flyoutHeaderContentView;

            RegisterEvent(
                eventName: "onnavigated",
                setId: id => NavigatedEventHandlerId   = id,
                clearId: () => NavigatedEventHandlerId = 0);
            ShellControl.Navigated += (s, e) =>
            {
                if (NavigatedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(NavigatedEventHandlerId, null, e));
                }
            };
            RegisterEvent(
                eventName: "onnavigating",
                setId: id => NavigatingEventHandlerId   = id,
                clearId: () => NavigatingEventHandlerId = 0);
            ShellControl.Navigating += (s, e) =>
            {
                if (NavigatingEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(NavigatingEventHandlerId, null, e));
                }
            };
        }
예제 #6
0
 public VisualElementHandler(NativeComponentRenderer renderer, XF.VisualElement visualElementControl) : base(renderer, visualElementControl)
 {
     VisualElementControl          = visualElementControl ?? throw new ArgumentNullException(nameof(visualElementControl));
     VisualElementControl.Focused += (s, e) =>
     {
         if (FocusedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(FocusedEventHandlerId, null, e));
         }
     };
     VisualElementControl.SizeChanged += (s, e) =>
     {
         if (SizeChangedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(SizeChangedEventHandlerId, null, e));
         }
     };
     VisualElementControl.Unfocused += (s, e) =>
     {
         if (UnfocusedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(UnfocusedEventHandlerId, null, e));
         }
     };
 }
예제 #7
0
        partial void Initialize(NativeComponentRenderer renderer)
        {
            ConfigureEvent(
                eventName: "onappearing",
                setId: id => AppearingEventHandlerId = id,
                clearId: id => { if (AppearingEventHandlerId == id)
                                 {
                                     AppearingEventHandlerId = 0;
                                 }
                });
            PageControl.Appearing += (s, e) =>
            {
                if (AppearingEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(AppearingEventHandlerId, null, e));
                }
            };

            ConfigureEvent(
                eventName: "ondisappearing",
                setId: id => DisappearingEventHandlerId = id,
                clearId: id => { if (DisappearingEventHandlerId == id)
                                 {
                                     DisappearingEventHandlerId = 0;
                                 }
                });
            PageControl.Disappearing += (s, e) =>
            {
                if (DisappearingEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(DisappearingEventHandlerId, null, e));
                }
            };
        }
 partial void Initialize(NativeComponentRenderer renderer)
 {
     RegisterEvent(
         eventName: "oncompleted",
         setId: id => CompletedEventHandlerId = id,
         clearId: id => { if (CompletedEventHandlerId == id)
                          {
                              CompletedEventHandlerId = 0;
                          }
         });
     EntryControl.Completed += (s, e) =>
     {
         if (CompletedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(CompletedEventHandlerId, null, e));
         }
     };
     RegisterEvent(
         eventName: "ontextchanged",
         setId: id => TextChangedEventHandlerId = id,
         clearId: id => { if (TextChangedEventHandlerId == id)
                          {
                              TextChangedEventHandlerId = 0;
                          }
         });
     EntryControl.TextChanged += (s, e) =>
     {
         if (TextChangedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(TextChangedEventHandlerId, null, new ChangeEventArgs {
                 Value = EntryControl.Text
             }));
         }
     };
 }
예제 #9
0
        public FlyoutFlyoutPageHandler(NativeComponentRenderer renderer, MC.ContentPage flyoutPageControl) : base(renderer, flyoutPageControl)
        {
            FlyoutPageControl = flyoutPageControl ?? throw new ArgumentNullException(nameof(flyoutPageControl));

            // The Flyout page must have its Title set: https://github.com/xamarin/Xamarin.Forms/blob/5.0.0/Xamarin.Forms.Core/FlyoutPage.cs#L74
            ContentPageControl.Title = "Title";
        }
        public MasterPageHandler(NativeComponentRenderer renderer, XF.ContentPage masterDetailPageControl) : base(renderer, masterDetailPageControl)
        {
            MasterDetailPageControl = masterDetailPageControl ?? throw new ArgumentNullException(nameof(masterDetailPageControl));

            // The Master page must have its Title set:
            // https://github.com/xamarin/Xamarin.Forms/blob/ff63ef551d9b2b5736092eb48aaf954f54d63417/Xamarin.Forms.Core/MasterDetailPage.cs#L72
            ContentPageControl.Title = "Title";
        }
예제 #11
0
        public ModalContainerHandler(NativeComponentRenderer renderer, DummyElement modalContainerDummyControl)
        {
            Renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
            ModalContainerPlaceholderElementControl = modalContainerDummyControl ?? throw new ArgumentNullException(nameof(modalContainerDummyControl));

            _parentChildManager = new ParentChildManager <XF.NavigableElement, XF.Page>(ShowDialogIfPossible);
            _parentChildManager.ChildChanged += OnParentChildManagerChildChanged;
        }
예제 #12
0
#pragma warning disable IDE0060 // Remove unused parameter
#pragma warning disable CA1801  // Parameter is never used
        partial void Initialize(NativeComponentRenderer renderer)
#pragma warning restore CA1801  // Parameter is never used
#pragma warning restore IDE0060 // Remove unused parameter
        {
            // The Master page must have its Title set:
            // https://github.com/xamarin/Xamarin.Forms/blob/ff63ef551d9b2b5736092eb48aaf954f54d63417/Xamarin.Forms.Core/MasterDetailPage.cs#L72
            ContentPageControl.Title = "Title";
        }
예제 #13
0
        public void TryParseTest(string s, Type type, object expectedResult, bool expectedSuccess)
        {
            var success = NativeComponentRenderer.TryParse(type, s, out var result);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(expectedResult, result);
                Assert.AreEqual(expectedSuccess, success);
            });
        }
예제 #14
0
        public void SetIntToString()
        {
            var component = new TestComponent();
            var value     = "NotAnInt";

            var parameters = new Dictionary <string, object> {
                { "IntParameter", value }
            };

            Assert.Throws <ArgumentException>(() => NativeComponentRenderer.SetParameterArguments(component, parameters));
        }
예제 #15
0
 public ButtonHandler(NativeComponentRenderer renderer, XF.Button buttonControl) : base(renderer, buttonControl)
 {
     ButtonControl          = buttonControl ?? throw new ArgumentNullException(nameof(buttonControl));
     ButtonControl.Clicked += (s, e) =>
     {
         if (ClickEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ClickEventHandlerId, null, e));
         }
     };
 }
예제 #16
0
        public void SetParameterTest(Dictionary <string, string> parameters, object expected)
        {
            var component = new TestComponent();

            NativeComponentRenderer.SetNavigationParameters(component, parameters);

            var prop  = component.GetType().GetProperty(parameters.FirstOrDefault().Key);
            var value = prop.GetValue(component);

            Assert.AreEqual(expected, value);
        }
예제 #17
0
 public BlazorButton(NativeComponentRenderer renderer)
 {
     Click += (s, e) =>
     {
         if (ClickEventHandlerId != default)
         {
             renderer.DispatchEventAsync(ClickEventHandlerId, null, new EventArgs());
         }
     };
     Renderer = renderer;
 }
 public MenuItemHandler(NativeComponentRenderer renderer, XF.MenuItem menuItemControl) : base(renderer, menuItemControl)
 {
     MenuItemControl          = menuItemControl ?? throw new ArgumentNullException(nameof(menuItemControl));
     MenuItemControl.Clicked += (s, e) =>
     {
         if (ClickEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ClickEventHandlerId, null, e));
         }
     };
 }
예제 #19
0
        public void SetIntToString()
        {
            var component = new TestComponent();
            var expected  = "NotAnInt";

            var parameters = new Dictionary <string, string> {
                { "IntParameter", expected }
            };

            Assert.Throws <InvalidOperationException>(() => NativeComponentRenderer.SetNavigationParameters(component, parameters));
        }
예제 #20
0
        public void SetNonParameter()
        {
            var component = new TestComponent();
            var value     = "NonParameter";

            var parameters = new Dictionary <string, object> {
                { "NonParameter", value }
            };

            Assert.Throws <InvalidOperationException>(() => NativeComponentRenderer.SetParameterArguments(component, parameters));
        }
        private void InitializeEventHandlers(NativeComponentRenderer renderer)
        {
            ConfigureEvent(
                eventName: "onselectionchanged",
                setId: id => SelectionChangedEventHandlerId = id,
                clearId: id => { if (SelectionChangedEventHandlerId == id)
                                 {
                                     SelectionChangedEventHandlerId = 0;
                                 }
                });

            ConfigureEvent(
                eventName: "onselecteditemchanged",
                setId: id => SelectedItemChangedEventHandlerId = id,
                clearId: id => { if (SelectedItemChangedEventHandlerId == id)
                                 {
                                     SelectedItemChangedEventHandlerId = 0;
                                 }
                });

            ConfigureEvent(
                eventName: "onselecteditemschanged",
                setId: id => SelectedItemsChangedEventHandlerId = id,
                clearId: id => { if (SelectedItemsChangedEventHandlerId == id)
                                 {
                                     SelectedItemsChangedEventHandlerId = 0;
                                 }
                });

            SelectableItemsViewControl.SelectionChanged += (s, e) =>
            {
                if (SelectionChangedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(SelectionChangedEventHandlerId, null, e));
                }

                if (SelectedItemChangedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(SelectedItemChangedEventHandlerId, null,
                                                                                      new ChangeEventArgs {
                        Value = SelectableItemsViewControl.SelectedItem
                    }));
                }

                if (SelectedItemsChangedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(SelectedItemsChangedEventHandlerId, null,
                                                                                      new ChangeEventArgs {
                        Value = SelectableItemsViewControl.SelectedItems
                    }));
                }
            };
        }
예제 #22
0
        public void SetParameterTest(Dictionary <string, object> parameters)
        {
            var component = new TestComponent();

            NativeComponentRenderer.SetParameterArguments(component, parameters);

            var parameterKeyValue = parameters.FirstOrDefault();
            var prop        = component.GetType().GetProperty(parameterKeyValue.Key);
            var actualValue = prop.GetValue(component);

            Assert.AreEqual(parameterKeyValue.Value, actualValue);
        }
예제 #23
0
        partial void Initialize(NativeComponentRenderer renderer)
        {
            ConfigureEvent(
                eventName: "ondragcompleted",
                setId: id => DragCompletedEventHandlerId = id,
                clearId: id => { if (DragCompletedEventHandlerId == id)
                                 {
                                     DragCompletedEventHandlerId = 0;
                                 }
                });
            SliderControl.DragCompleted += (s, e) =>
            {
                if (DragCompletedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(DragCompletedEventHandlerId, null, e));
                }
            };

            ConfigureEvent(
                eventName: "ondragstarted",
                setId: id => DragStartedEventHandlerId = id,
                clearId: id => { if (DragStartedEventHandlerId == id)
                                 {
                                     DragStartedEventHandlerId = 0;
                                 }
                });
            SliderControl.DragStarted += (s, e) =>
            {
                if (DragStartedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(DragStartedEventHandlerId, null, e));
                }
            };

            ConfigureEvent(
                eventName: "onvaluechanged",
                setId: id => ValueChangedEventHandlerId = id,
                clearId: id => { if (ValueChangedEventHandlerId == id)
                                 {
                                     ValueChangedEventHandlerId = 0;
                                 }
                });
            SliderControl.ValueChanged += (s, e) =>
            {
                if (ValueChangedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ValueChangedEventHandlerId, null, new ChangeEventArgs {
                        Value = SliderControl.Value
                    }));
                }
            };
        }
예제 #24
0
 public BlazorTextBox(NativeComponentRenderer renderer)
 {
     TextChanged += (s, e) =>
     {
         if (TextChangedEventHandlerId != default)
         {
             renderer.DispatchEventAsync(TextChangedEventHandlerId, null, new ChangeEventArgs {
                 Value = Text
             });
         }
     };
     Renderer = renderer;
 }
 public SwitchHandler(NativeComponentRenderer renderer, XF.Switch switchControl) : base(renderer, switchControl)
 {
     SwitchControl          = switchControl ?? throw new System.ArgumentNullException(nameof(switchControl));
     SwitchControl.Toggled += (s, e) =>
     {
         if (IsToggledChangedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(IsToggledChangedEventHandlerId, null, new ChangeEventArgs {
                 Value = SwitchControl.IsToggled
             }));
         }
     };
 }
 public StepperHandler(NativeComponentRenderer renderer, XF.Stepper stepperControl) : base(renderer, stepperControl)
 {
     StepperControl = stepperControl ?? throw new ArgumentNullException(nameof(stepperControl));
     StepperControl.ValueChanged += (s, e) =>
     {
         if (ValueChangedEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ValueChangedEventHandlerId, null, new ChangeEventArgs {
                 Value = StepperControl.Value
             }));
         }
     };
 }
예제 #27
0
 partial void Initialize(NativeComponentRenderer renderer)
 {
     //RegisterEvent(
     //    eventName: "oncurrentpagechanged",
     //    setId: id => CurrentPageChangedId = id,
     //    clearId: id => { if (CurrentPageChangedId == id) { CurrentPageChangedId = 0; } });
     //BottomTabbedPageControl.CurrentPageChanged += (s, e) =>
     //{
     //    if (CurrentPageChangedId != default)
     //    {
     //        renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(CurrentPageChangedId, null, e));
     //    }
     //};
 }
예제 #28
0
        partial void Initialize(NativeComponentRenderer renderer)
        {
            ConfigureEvent(
                eventName: "onclick",
                setId: id => ClickEventHandlerId = id,
                clearId: id => { if (ClickEventHandlerId == id)
                                 {
                                     ClickEventHandlerId = 0;
                                 }
                });
            ButtonControl.Clicked += (s, e) =>
            {
                if (ClickEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ClickEventHandlerId, null, e));
                }
            };

            ConfigureEvent(
                eventName: "onpress",
                setId: id => PressEventHandlerId = id,
                clearId: id => { if (PressEventHandlerId == id)
                                 {
                                     PressEventHandlerId = 0;
                                 }
                });
            ButtonControl.Pressed += (s, e) =>
            {
                if (PressEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(PressEventHandlerId, null, e));
                }
            };

            ConfigureEvent(
                eventName: "onrelease",
                setId: id => ReleaseEventHandlerId = id,
                clearId: id => { if (ReleaseEventHandlerId == id)
                                 {
                                     ReleaseEventHandlerId = 0;
                                 }
                });
            ButtonControl.Released += (s, e) =>
            {
                if (ReleaseEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ReleaseEventHandlerId, null, e));
                }
            };
        }
예제 #29
0
 partial void Initialize(NativeComponentRenderer renderer)
 {
     RegisterEvent(
         eventName: "onclick",
         setId: id => ClickEventHandlerId   = id,
         clearId: () => ClickEventHandlerId = 0);
     ButtonControl.Clicked += (s, e) =>
     {
         if (ClickEventHandlerId != default)
         {
             renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(ClickEventHandlerId, null, e));
         }
     };
 }
partial         void Initialize(NativeComponentRenderer renderer)
        {
            RegisterEvent(
                eventName: "onischeckedchanged",
                setId: id => IsCheckedChangedEventHandlerId = id,
                clearId: id => { if (IsCheckedChangedEventHandlerId == id) { IsCheckedChangedEventHandlerId = 0; } });
            CheckBoxControl.CheckedChanged += (s, e) =>
            {
                if (IsCheckedChangedEventHandlerId != default)
                {
                    renderer.Dispatcher.InvokeAsync(() => renderer.DispatchEventAsync(IsCheckedChangedEventHandlerId, null, new ChangeEventArgs { Value = e.Value }));
                }
            };
        }