Mega Code Archive

 
Categories / C# / WPF
 

Programmatically change the Stretch and StretchDirection of content within a Viewbox

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     x:Class="Viewbox_Stretch_Layout_Samp.Window1"     Title="ViewBox Stretch and StretchDirection Sample">   <DockPanel Background="White">         <StackPanel 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>             <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="c:\image.jpg"/>             </Viewbox>             </StackPanel>   </DockPanel> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; namespace Viewbox_Stretch_Layout_Samp {   public partial class Window1 : Window   {         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.";         }     } }