summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs')
-rw-r--r--Xamarin.Forms.ControlGallery.WP8/BrokenNativeControl.cs56
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