UWP Viewbox
The Viewbox class defines a content decorator that can stretch and scale
a single child to fill the available space.
The following UWP application development tutorial will demonstrate how we can use Viewbox in an app. Here we put two Viewbox controls in the app screen using XAML. We put another Viewbox control programmatically in the layout using code. The last Viewbox also holds child control.
The Viewbox class’s Child property gets or sets the single child element of a Viewbox element.
The Viewbox class’s Stretch property gets or sets the Stretch mode, which determines how content fits into the available space. This property value is a Stretch mode, which determines how content fits in the available space. The default value of this property is Uniform.
The Stretch enum describes how content is resized to fill its allocated space. The Stretch enum available values are Fill, None, Uniform, and UniformToFill. The Stretch Fill value defines the content as resized to fill the destination dimensions. The aspect ratio is not preserved.
The Viewbox class’s StretchDirection property gets or sets the StretchDirection, which determines how scaling is applied to the contents of a Viewbox. This property value is a StretchDirection enum value, which determines how scaling is applied to the contents of a Viewbox. The default value is Both.
The StretchDirection enum defines constants that specify the direction in which the content is scaled. The available values are Both, DownOnly, and UpOnly.
The following UWP application development tutorial will demonstrate how we can use Viewbox in an app. Here we put two Viewbox controls in the app screen using XAML. We put another Viewbox control programmatically in the layout using code. The last Viewbox also holds child control.
The Viewbox class’s Child property gets or sets the single child element of a Viewbox element.
The Viewbox class’s Stretch property gets or sets the Stretch mode, which determines how content fits into the available space. This property value is a Stretch mode, which determines how content fits in the available space. The default value of this property is Uniform.
The Stretch enum describes how content is resized to fill its allocated space. The Stretch enum available values are Fill, None, Uniform, and UniformToFill. The Stretch Fill value defines the content as resized to fill the destination dimensions. The aspect ratio is not preserved.
The Viewbox class’s StretchDirection property gets or sets the StretchDirection, which determines how scaling is applied to the contents of a Viewbox. This property value is a StretchDirection enum value, which determines how scaling is applied to the contents of a Viewbox. The default value is Both.
The StretchDirection enum defines constants that specify the direction in which the content is scaled. The available values are Both, DownOnly, and UpOnly.
MainPage.xaml
<Page
x:Class="UniversalAppTutorials.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UniversalAppTutorials"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel
x:Name="StackPanel1"
Margin="50"
Orientation="Vertical"
Background="AliceBlue"
Padding="50"
>
<Viewbox MaxWidth="175" MaxHeight="175">
<SymbolIcon Symbol="OpenPane" Foreground="Orchid"/>
</Viewbox>
<Viewbox MaxWidth="400" MaxHeight="200">
<Button Content="Sample Button"/>
</Viewbox>
</StackPanel>
</Page>
MainPage.xaml.cs
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml;
namespace UniversalAppTutorials
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
// Initialize a new Viewbox instance
Viewbox viewbox = new Viewbox();
// Set the Viewbox maximum width and height
// This will resize the inside content
viewbox.MaxWidth = 300;
viewbox.MaxHeight = 150;
// Set the margin of Viewbox
viewbox.Margin = new Thickness(25);
// Initialize a new Button
Button button = new Button();
button.Content = "Another Button";
// Put the Button inside Viewbox
viewbox.Child = button;
// Finally, put the Viewbox on stack panel
StackPanel1.Children.Add(viewbox);
}
}
}