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. Button elements 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>

<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>
 </StackPanel>        

<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"/>
    </Viewbox>    
</StackPanel>


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


Private Sub stretchNone(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.Stretch = System.Windows.Media.Stretch.None
    txt1.Text = "Stretch is now set to None."
End Sub

Private Sub stretchFill(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.Stretch = System.Windows.Media.Stretch.Fill
    txt1.Text = "Stretch is now set to Fill."
End Sub

Private Sub stretchUni(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.Stretch = System.Windows.Media.Stretch.Uniform
    txt1.Text = "Stretch is now set to Uniform."
End Sub

Private Sub stretchUniFill(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.Stretch = System.Windows.Media.Stretch.UniformToFill
    txt1.Text = "Stretch is now set to UniformToFill."
End Sub

Private Sub sdUpOnly(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.StretchDirection = System.Windows.Controls.StretchDirection.UpOnly
    txt2.Text = "StretchDirection is now UpOnly."
End Sub

Private Sub sdDownOnly(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.StretchDirection = System.Windows.Controls.StretchDirection.DownOnly
    txt2.Text = "StretchDirection is now DownOnly."
End Sub

Private Sub sdBoth(ByVal sender As Object, ByVal args As RoutedEventArgs)

    vb1.StretchDirection = System.Windows.Controls.StretchDirection.Both
    txt2.Text = "StretchDirection is now Both."
End Sub


Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft