diff options
Diffstat (limited to 'Xamarin.Forms.Platform.WP8')
-rw-r--r-- | Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs | 6 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/ImageRenderer.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/MasterDetailRenderer.cs | 6 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs | 26 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/PageRenderer.cs | 4 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/PickerRenderer.cs | 8 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/Platform.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/StepperRenderer.cs | 6 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/SwitchRenderer.cs | 6 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/TabbedPageRenderer.cs | 6 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/VisualElementPackager.cs | 8 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/VisualElementRenderer.cs | 14 |
12 files changed, 56 insertions, 38 deletions
diff --git a/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs index 29446c43..26cf2c1f 100644 --- a/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs @@ -75,7 +75,7 @@ namespace Xamarin.Forms.Platform.WinPhone if (element.ActualWidth > 0 && element.ActualHeight > 0) { var carouselItem = (Page)DataContext; - ((CarouselPage)carouselItem.RealParent).ContainerArea = new Rectangle(0, 0, element.ActualWidth, element.ActualHeight); + ((IPageController)carouselItem.RealParent).ContainerArea = new Rectangle(0, 0, element.ActualWidth, element.ActualHeight); } }; } @@ -132,8 +132,8 @@ namespace Xamarin.Forms.Platform.WinPhone _page.PagesChanged += OnPagesChanged; _page.PropertyChanged += OnPropertyChanged; - Loaded += (sender, args) => _page.SendAppearing(); - Unloaded += (sender, args) => _page.SendDisappearing(); + Loaded += (sender, args) => ((IPageController)_page).SendAppearing(); + Unloaded += (sender, args) => ((IPageController)_page).SendDisappearing(); OnElementChanged(new VisualElementChangedEventArgs(oldElement, element)); } diff --git a/Xamarin.Forms.Platform.WP8/ImageRenderer.cs b/Xamarin.Forms.Platform.WP8/ImageRenderer.cs index 9a758c11..ebc50adc 100644 --- a/Xamarin.Forms.Platform.WP8/ImageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/ImageRenderer.cs @@ -27,6 +27,8 @@ namespace Xamarin.Forms.Platform.WinPhone public class ImageRenderer : ViewRenderer<Image, System.Windows.Controls.Image> { + IElementController ElementController => Element as IElementController; + public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) { // Someone reported a NRE happening in this method which can only be explained by Control being null diff --git a/Xamarin.Forms.Platform.WP8/MasterDetailRenderer.cs b/Xamarin.Forms.Platform.WP8/MasterDetailRenderer.cs index 25ca8465..9f05cb87 100644 --- a/Xamarin.Forms.Platform.WP8/MasterDetailRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/MasterDetailRenderer.cs @@ -24,6 +24,8 @@ namespace Xamarin.Forms.Platform.WinPhone public bool Visible { get; private set; } + IPageController PageController => Element as IPageController; + protected override System.Windows.Size ArrangeOverride(System.Windows.Size finalSize) { UpdateSizes(finalSize.Width, finalSize.Height); @@ -49,11 +51,11 @@ namespace Xamarin.Forms.Platform.WinPhone { if (Element.IsPresented) Toggle(); - Element.SendAppearing(); + PageController.SendAppearing(); }; Unloaded += (sender, args) => { - Element.SendDisappearing(); + PageController.SendDisappearing(); if (Visible) { var platform = (Platform)Element.Platform; diff --git a/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs index 2bd5b7b3..1637b1d0 100644 --- a/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/NavigationPageRenderer.cs @@ -19,6 +19,9 @@ namespace Xamarin.Forms.Platform.WinPhone AutoPackage = false; } + IPageController PageController => Element as IPageController; + IElementController ElementController => Element as IElementController; + protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e) { base.OnElementChanged(e); @@ -37,9 +40,10 @@ namespace Xamarin.Forms.Platform.WinPhone Element.PropertyChanged += OnElementPropertyChanged; var platform = (Platform)Element.Platform; - Element.ContainerArea = new Rectangle(new Point(0, 0), platform.Size); - platform.SizeChanged += (sender, args) => Element.ContainerArea = new Rectangle(new Point(0, 0), platform.Size); + PageController.ContainerArea = new Rectangle(new Point(0, 0), platform.Size); + + platform.SizeChanged += (sender, args) => PageController.ContainerArea = new Rectangle(new Point(0, 0), platform.Size); List<Page> stack = GetStack(); if (stack.Count > 0) @@ -59,7 +63,7 @@ namespace Xamarin.Forms.Platform.WinPhone else init(); - Loaded += (sender, args) => Element.SendAppearing(); + Loaded += (sender, args) => PageController.SendAppearing(); Unloaded += OnUnloaded; } @@ -79,10 +83,10 @@ namespace Xamarin.Forms.Platform.WinPhone List<Page> GetStack() { - int count = Element.InternalChildren.Count; + int count = PageController.InternalChildren.Count; var stack = new List<Page>(count); for (var i = 0; i < count; i++) - stack.Add((Page)Element.InternalChildren[i]); + stack.Add((Page)PageController.InternalChildren[i]); return stack; } @@ -97,9 +101,9 @@ namespace Xamarin.Forms.Platform.WinPhone if (platform == null) return; - for (var i = 0; i < Element.LogicalChildren.Count; i++) + for (var i = 0; i < ElementController.LogicalChildren.Count; i++) { - var page = Element.LogicalChildren[i] as Page; + var page = ElementController.LogicalChildren[i] as Page; if (page != null) platform.RemovePage(page, false); } @@ -107,7 +111,7 @@ namespace Xamarin.Forms.Platform.WinPhone void OnUnloaded(object sender, RoutedEventArgs args) { - Element.SendDisappearing(); + PageController.SendDisappearing(); } void PageOnPopped(object sender, NavigationRequestedEventArgs eventArg) @@ -136,7 +140,7 @@ namespace Xamarin.Forms.Platform.WinPhone if (platform != null) { if (e.Page == ((INavigationPageController)Element).StackCopy.LastOrDefault()) - e.Page.IgnoresContainerArea = true; + ((IPageController)e.Page).IgnoresContainerArea = true; e.Task = platform.PushCore(e.Page, Element, e.Animated, e.Realize).ContinueWith((t, o) => true, null); } } @@ -169,7 +173,7 @@ namespace Xamarin.Forms.Platform.WinPhone { Children.RemoveAt(0); - var page = renderer.Element as Page; + var page = renderer.Element as IPageController; if (page != null) page.IgnoresContainerArea = false; @@ -183,7 +187,7 @@ namespace Xamarin.Forms.Platform.WinPhone if (first == null) return; - first.IgnoresContainerArea = true; + ((IPageController)first).IgnoresContainerArea = true; IVisualElementRenderer firstRenderer = Platform.GetRenderer(first); if (firstRenderer == null) diff --git a/Xamarin.Forms.Platform.WP8/PageRenderer.cs b/Xamarin.Forms.Platform.WP8/PageRenderer.cs index 6ba89ab5..8d314464 100644 --- a/Xamarin.Forms.Platform.WP8/PageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/PageRenderer.cs @@ -11,8 +11,8 @@ namespace Xamarin.Forms.Platform.WinPhone base.OnElementChanged(e); - Loaded += (sender, args) => Element.SendAppearing(); - Unloaded += (sender, args) => Element.SendDisappearing(); + Loaded += (sender, args) => ((IPageController)Element).SendAppearing(); + Unloaded += (sender, args) => ((IPageController)Element).SendDisappearing(); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.WP8/PickerRenderer.cs b/Xamarin.Forms.Platform.WP8/PickerRenderer.cs index d52f7314..5dc1d838 100644 --- a/Xamarin.Forms.Platform.WP8/PickerRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/PickerRenderer.cs @@ -15,6 +15,8 @@ namespace Xamarin.Forms.Platform.WinPhone FormsListPicker _listPicker; Brush _defaultBrush; + IElementController ElementController => Element as IElementController; + protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) { _listPicker = new FormsListPicker(); @@ -134,12 +136,12 @@ namespace Xamarin.Forms.Platform.WinPhone if (oldVal == ListPickerMode.Normal && newVal == ListPickerMode.Full) { // Picker Page is now showing - ((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true); + ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true); } else if (oldVal == ListPickerMode.Full && newVal == ListPickerMode.Normal) { // PickerPage is now dismissed - ((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false); + ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false); } } @@ -165,7 +167,7 @@ namespace Xamarin.Forms.Platform.WinPhone return; int elementSelectedIndex = picker.SelectedIndex - 1; - ((IElementController)Element).SetValueFromRenderer(Picker.SelectedIndexProperty, elementSelectedIndex); + ElementController.SetValueFromRenderer(Picker.SelectedIndexProperty, elementSelectedIndex); } void UpdateAlignment() diff --git a/Xamarin.Forms.Platform.WP8/Platform.cs b/Xamarin.Forms.Platform.WP8/Platform.cs index cda86bc9..00623b4d 100644 --- a/Xamarin.Forms.Platform.WP8/Platform.cs +++ b/Xamarin.Forms.Platform.WP8/Platform.cs @@ -248,7 +248,7 @@ namespace Xamarin.Forms.Platform.WinPhone var parent = current.Parent as NavigationPage; if (parent != null) { - if (parent.InternalChildren[0] == current) + if (((IPageController)parent).InternalChildren[0] == current) replaceWithRoot = true; } diff --git a/Xamarin.Forms.Platform.WP8/StepperRenderer.cs b/Xamarin.Forms.Platform.WP8/StepperRenderer.cs index b459305f..a0193c32 100644 --- a/Xamarin.Forms.Platform.WP8/StepperRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/StepperRenderer.cs @@ -12,6 +12,8 @@ namespace Xamarin.Forms.Platform.WinPhone WButton _downButton; WButton _upButton; + IElementController ElementController => Element as IElementController; + protected override void OnElementChanged(ElementChangedEventArgs<Stepper> e) { base.OnElementChanged(e); @@ -51,12 +53,12 @@ namespace Xamarin.Forms.Platform.WinPhone void DownButtonOnClick(object sender, RoutedEventArgs routedEventArgs) { - ((IElementController)Element).SetValueFromRenderer(Stepper.ValueProperty, Math.Max(Element.Minimum, Element.Value - Element.Increment)); + ElementController.SetValueFromRenderer(Stepper.ValueProperty, Math.Max(Element.Minimum, Element.Value - Element.Increment)); } void UpButtonOnClick(object sender, RoutedEventArgs routedEventArgs) { - ((IElementController)Element).SetValueFromRenderer(Stepper.ValueProperty, Math.Min(Element.Maximum, Element.Value + Element.Increment)); + ElementController.SetValueFromRenderer(Stepper.ValueProperty, Math.Min(Element.Maximum, Element.Value + Element.Increment)); } void UpdateButtons() diff --git a/Xamarin.Forms.Platform.WP8/SwitchRenderer.cs b/Xamarin.Forms.Platform.WP8/SwitchRenderer.cs index e64fe227..653cd0a6 100644 --- a/Xamarin.Forms.Platform.WP8/SwitchRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/SwitchRenderer.cs @@ -9,14 +9,16 @@ namespace Xamarin.Forms.Platform.WinPhone { readonly ToggleSwitchButton _toggleSwitch = new ToggleSwitchButton(); + IElementController ElementController => Element as IElementController; + protected override void OnElementChanged(ElementChangedEventArgs<Switch> e) { base.OnElementChanged(e); var container = new Border { Child = _toggleSwitch }; _toggleSwitch.IsChecked = Element.IsToggled; - _toggleSwitch.Checked += (sender, args) => ((IElementController)Element).SetValueFromRenderer(Switch.IsToggledProperty, true); - _toggleSwitch.Unchecked += (sender, args) => ((IElementController)Element).SetValueFromRenderer(Switch.IsToggledProperty, false); + _toggleSwitch.Checked += (sender, args) => ElementController.SetValueFromRenderer(Switch.IsToggledProperty, true); + _toggleSwitch.Unchecked += (sender, args) => ElementController.SetValueFromRenderer(Switch.IsToggledProperty, false); _toggleSwitch.HorizontalAlignment = HorizontalAlignment.Right; SetNativeControl(container); diff --git a/Xamarin.Forms.Platform.WP8/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.WP8/TabbedPageRenderer.cs index 9192fc6f..6d796e9c 100644 --- a/Xamarin.Forms.Platform.WP8/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/TabbedPageRenderer.cs @@ -26,7 +26,7 @@ namespace Xamarin.Forms.Platform.WinPhone if (pivotItem.ActualWidth > 0 && pivotItem.ActualHeight > 0) { var tab = (Page)DataContext; - ((TabbedPage)tab.RealParent).ContainerArea = new Rectangle(0, 0, pivotItem.ActualWidth, pivotItem.ActualHeight); + ((IPageController)tab.RealParent).ContainerArea = new Rectangle(0, 0, pivotItem.ActualWidth, pivotItem.ActualHeight); } }; } @@ -74,8 +74,8 @@ namespace Xamarin.Forms.Platform.WinPhone _page.PropertyChanged += OnPropertyChanged; - Loaded += (sender, args) => _page.SendAppearing(); - Unloaded += (sender, args) => _page.SendDisappearing(); + Loaded += (sender, args) => ((IPageController)_page).SendAppearing(); + Unloaded += (sender, args) => ((IPageController)_page).SendDisappearing(); OnElementChanged(new VisualElementChangedEventArgs(_page, element)); } diff --git a/Xamarin.Forms.Platform.WP8/VisualElementPackager.cs b/Xamarin.Forms.Platform.WP8/VisualElementPackager.cs index 65f589fc..95e80370 100644 --- a/Xamarin.Forms.Platform.WP8/VisualElementPackager.cs +++ b/Xamarin.Forms.Platform.WP8/VisualElementPackager.cs @@ -22,6 +22,8 @@ namespace Xamarin.Forms.Platform.WinPhone _renderer = renderer; } + IElementController ElementController => _renderer.Element as IElementController; + public void Load() { if (_loaded) @@ -32,15 +34,15 @@ namespace Xamarin.Forms.Platform.WinPhone _renderer.Element.ChildRemoved += HandleChildRemoved; _renderer.Element.ChildrenReordered += HandleChildrenReordered; - foreach (Element child in _renderer.Element.LogicalChildren) + foreach (Element child in ElementController.LogicalChildren) HandleChildAdded(_renderer.Element, new ElementEventArgs(child)); } void EnsureZIndex() { - for (var index = 0; index < _renderer.Element.LogicalChildren.Count; index++) + for (var index = 0; index < ElementController.LogicalChildren.Count; index++) { - var child = (VisualElement)_renderer.Element.LogicalChildren[index]; + var child = (VisualElement)ElementController.LogicalChildren[index]; IVisualElementRenderer r = Platform.GetRenderer(child); if (r == null) continue; diff --git a/Xamarin.Forms.Platform.WP8/VisualElementRenderer.cs b/Xamarin.Forms.Platform.WP8/VisualElementRenderer.cs index aca47d6a..93788adf 100644 --- a/Xamarin.Forms.Platform.WP8/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/VisualElementRenderer.cs @@ -15,6 +15,8 @@ namespace Xamarin.Forms.Platform.WinPhone VisualElementTracker _tracker; + IElementController ElementController => Element as IElementController; + public TNativeElement Control { get; private set; } public TElement Element { get; private set; } @@ -139,9 +141,9 @@ namespace Xamarin.Forms.Platform.WinPhone Control.Arrange(new Rect(0, 0, finalSize.Width, finalSize.Height)); } - for (var i = 0; i < Element.LogicalChildren.Count; i++) + for (var i = 0; i < ElementController.LogicalChildren.Count; i++) { - var child = Element.LogicalChildren[i] as VisualElement; + var child = ElementController.LogicalChildren[i] as VisualElement; if (child == null) continue; IVisualElementRenderer renderer = Platform.GetRenderer(child); @@ -164,9 +166,9 @@ namespace Xamarin.Forms.Platform.WinPhone Element.IsInNativeLayout = true; - for (var i = 0; i < Element.LogicalChildren.Count; i++) + for (var i = 0; i < ElementController.LogicalChildren.Count; i++) { - var child = Element.LogicalChildren[i] as VisualElement; + var child = ElementController.LogicalChildren[i] as VisualElement; if (child == null) continue; IVisualElementRenderer renderer = Platform.GetRenderer(child); @@ -227,12 +229,12 @@ namespace Xamarin.Forms.Platform.WinPhone protected virtual void OnGotFocus(object sender, RoutedEventArgs args) { - ((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true); + ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true); } protected virtual void OnLostFocus(object sender, RoutedEventArgs args) { - ((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false); + ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false); } protected virtual void OnRegisterEffect(PlatformEffect effect) |