Apply Stretch Properties to the Contents of a Viewbox
Collapse the table of content
Expand the table of content

How to: Apply Stretch Properties to the Contents of a Viewbox


This example shows how to change the value of the StretchDirection and Stretch properties of a Viewbox.

The first example uses Extensible Application Markup Language (XAML) to define a Viewbox element. It assigns a MaxWidth and MaxHeight of 400. The example nests an Image element within the Viewbox. Buttons that correspond to the property values for the Stretch and StretchDirection enumerations manipulate the stretching behavior of the nested Image.

<StackPanel Margin="0,0,0,10" HorizontalAlignment="Center" Orientation="Horizontal" DockPanel.Dock="Top">
    <Button Name="btn1" Click="stretchNone">Stretch="None"</Button>
    <Button Name="btn2" Click="stretchFill">Stretch="Fill"</Button>
    <Button Name="btn3" Click="stretchUni">Stretch="Uniform"</Button>
    <Button Name="btn4" Click="stretchUniFill">Stretch="UniformToFill"</Button>

<StackPanel Margin="0,0,0,10" HorizontalAlignment="Center" Orientation="Horizontal" DockPanel.Dock="Top">
    <Button Name="btn5" Click="sdUpOnly">StretchDirection="UpOnly"</Button>
    <Button Name="btn6" Click="sdDownOnly">StretchDirection="DownOnly"</Button>
    <Button Name="btn7" Click="sdBoth">StretchDirection="Both"</Button>

<TextBlock DockPanel.Dock="Top" Name="txt1" />
<TextBlock DockPanel.Dock="Top" Name="txt2" />

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <Viewbox MaxWidth="500" MaxHeight="500" Name="vb1">
        <Image Source="tulip_farm.jpg"/>

The following code-behind file handles the Button Click events that the previous XAML example defines.

public void stretchNone(object sender, RoutedEventArgs e)
    vb1.Stretch = System.Windows.Media.Stretch.None;
    txt1.Text = "Stretch is now set to None.";

public void stretchFill(object sender, RoutedEventArgs e)
    vb1.Stretch = System.Windows.Media.Stretch.Fill;
    txt1.Text = "Stretch is now set to Fill.";

public void stretchUni(object sender, RoutedEventArgs e)
    vb1.Stretch = System.Windows.Media.Stretch.Uniform;
    txt1.Text = "Stretch is now set to Uniform.";

public void stretchUniFill(object sender, RoutedEventArgs e)
    vb1.Stretch = System.Windows.Media.Stretch.UniformToFill;
    txt1.Text = "Stretch is now set to UniformToFill.";

public void sdUpOnly(object sender, RoutedEventArgs e)
    vb1.StretchDirection = System.Windows.Controls.StretchDirection.UpOnly;
    txt2.Text = "StretchDirection is now UpOnly.";

public void sdDownOnly(object sender, RoutedEventArgs e)
    vb1.StretchDirection = System.Windows.Controls.StretchDirection.DownOnly;
    txt2.Text = "StretchDirection is now DownOnly.";

public void sdBoth(object sender, RoutedEventArgs e)
    vb1.StretchDirection = System.Windows.Controls.StretchDirection.Both;
    txt2.Text = "StretchDirection is now Both.";

See Also

Community Additions

© 2016 Microsoft