diff options
Diffstat (limited to 'Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs')
-rw-r--r-- | Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs b/Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs new file mode 100644 index 00000000..b05c12cb --- /dev/null +++ b/Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs @@ -0,0 +1,56 @@ +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; + +namespace Xamarin.Forms.ControlGallery.WP8 +{ + internal class BrokenNativeControl : Panel + { + public BrokenNativeControl () + { + _textBlock = new TextBlock { + MinHeight = 0, + MaxHeight = double.PositiveInfinity, + MinWidth = 0, + MaxWidth = double.PositiveInfinity, + FontSize = 24, + HorizontalAlignment = HorizontalAlignment.Center + }; + + Children.Add (_textBlock); + + Background = new RadialGradientBrush (Colors.Green, Colors.Blue); + } + + public static readonly DependencyProperty TextProperty = DependencyProperty.Register ( + "Text", typeof(string), typeof(BrokenNativeControl), new PropertyMetadata (default(string), PropertyChangedCallback)); + + static void PropertyChangedCallback (DependencyObject dependencyObject, + DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) + { + ((BrokenNativeControl)dependencyObject)._textBlock.Text = (string)dependencyPropertyChangedEventArgs.NewValue; + } + + public string Text + { + get { return (string)GetValue (TextProperty); } + set { SetValue (TextProperty, value); } + } + + readonly TextBlock _textBlock; + + protected override System.Windows.Size ArrangeOverride (System.Windows.Size finalSize) + { + _textBlock.Arrange (new Rect (0, 0, finalSize.Width, finalSize.Height)); + return finalSize; + } + + protected override System.Windows.Size MeasureOverride (System.Windows.Size availableSize) + { + _textBlock.Measure (availableSize); + + // This deliberately does something wrong so we can demo fixing it + return new System.Windows.Size (600, _textBlock.DesiredSize.Height); + } + } +}
\ No newline at end of file |