maui-linux/Xamarin.Forms.ControlGaller.../BrokenNativeControl.cs

56 строки
1.6 KiB
C#

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);
}
}
}