maui-linux/Xamarin.Forms.Controls/GalleryPages/ScaleRotate.cs

158 строки
4.0 KiB
C#

using System;
using Xamarin.Forms;
namespace Xamarin.Forms.Controls
{
internal class ScaleRotate : ContentPage
{
public ScaleRotate()
{
Label label = new Label
{
Text = "SCALE AND\nROTATE",
HorizontalTextAlignment = TextAlignment.Center,
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.CenterAndExpand
};
// Label and Slider for Scale property.
Label scaleSliderValue = new Label
{
VerticalTextAlignment = TextAlignment.Center
};
Grid.SetRow(scaleSliderValue, 0);
Grid.SetColumn(scaleSliderValue, 0);
Slider scaleSlider = new Slider
{
Maximum = 10
};
Grid.SetRow(scaleSlider, 0);
Grid.SetColumn(scaleSlider, 1);
// Set Bindings.
scaleSliderValue.BindingContext = scaleSlider;
scaleSliderValue.SetBinding(Label.TextProperty,
new Binding("Value", BindingMode.OneWay, null, null, "Scale = {0:F1}"));
scaleSlider.BindingContext = label;
scaleSlider.SetBinding(Slider.ValueProperty,
new Binding("Scale", BindingMode.TwoWay));
// Label and Slider for Rotation property.
Label rotationSliderValue = new Label
{
VerticalTextAlignment = TextAlignment.Center
};
Grid.SetRow(rotationSliderValue, 1);
Grid.SetColumn(rotationSliderValue, 0);
Slider rotationSlider = new Slider
{
Maximum = 360
};
Grid.SetRow(rotationSlider, 1);
Grid.SetColumn(rotationSlider, 1);
// Set Bindings.
rotationSliderValue.BindingContext = rotationSlider;
rotationSliderValue.SetBinding(Label.TextProperty,
new Binding("Value", BindingMode.OneWay, null, null, "Rotation = {0:F0}"));
rotationSlider.BindingContext = label;
rotationSlider.SetBinding(Slider.ValueProperty,
new Binding("Rotation", BindingMode.TwoWay));
// Label and Slider for AnchorX property.
Label anchorxStepperValue = new Label
{
VerticalTextAlignment = TextAlignment.Center
};
Grid.SetRow(anchorxStepperValue, 2);
Grid.SetColumn(anchorxStepperValue, 0);
Stepper anchorxStepper = new Stepper
{
Maximum = 2,
Minimum = -1,
Increment = 0.5
};
Grid.SetRow(anchorxStepper, 2);
Grid.SetColumn(anchorxStepper, 1);
// Set bindings.
anchorxStepperValue.BindingContext = anchorxStepper;
anchorxStepperValue.SetBinding(Label.TextProperty,
new Binding("Value", BindingMode.OneWay, null, null, "AnchorX = {0:F1}"));
anchorxStepper.BindingContext = label;
anchorxStepper.SetBinding(Stepper.ValueProperty,
new Binding("AnchorX", BindingMode.TwoWay));
// Label and Slider for AnchorY property.
Label anchoryStepperValue = new Label
{
VerticalTextAlignment = TextAlignment.Center
};
Grid.SetRow(anchoryStepperValue, 3);
Grid.SetColumn(anchoryStepperValue, 0);
Stepper anchoryStepper = new Stepper
{
Maximum = 2,
Minimum = -1,
Increment = 0.5
};
Grid.SetRow(anchoryStepper, 3);
Grid.SetColumn(anchoryStepper, 1);
// Set bindings.
anchoryStepperValue.BindingContext = anchoryStepper;
anchoryStepperValue.SetBinding(Label.TextProperty,
new Binding("Value", BindingMode.OneWay, null, null, "AnchorY = {0:F1}"));
anchoryStepper.BindingContext = label;
anchoryStepper.SetBinding(Stepper.ValueProperty,
new Binding("AnchorY", BindingMode.TwoWay));
// Assemble the page.
Content = new StackLayout
{
Children =
{
label,
new Grid
{
Padding = 10,
RowDefinitions =
{
new RowDefinition { Height = GridLength.Auto },
new RowDefinition { Height = GridLength.Auto },
new RowDefinition { Height = GridLength.Auto },
new RowDefinition { Height = GridLength.Auto },
},
ColumnDefinitions =
{
new ColumnDefinition { Width = GridLength.Auto },
new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star)}
},
Children =
{
scaleSliderValue,
scaleSlider,
rotationSliderValue,
rotationSlider,
anchorxStepperValue,
anchorxStepper,
anchoryStepperValue,
anchoryStepper
}
}
}
};
}
}
}