The WPF Frame control using XAML and C# supports content navigation within content. A Frame can be hosted within a Window, NavigationWindow, Page, UserControl, or a FlowDocument control.
WPf Frame

How to create a Frame in WPF

This XAML code shows how to create a Frame control and sets its Source property to load a XAML page within it.
  1. <Window x:Class="FrameSample.Window1"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="Window1" Height="300" Width="300">
  5. <Grid>
  6. <TextBlock>Outside area of frame</TextBlock>
  7. <Frame Source="Page1.xaml">
  8. </Frame>
  9. </Grid>
  10. </Window>
The Window looks like this. The Purple area is the Page1.xaml and the White area is outside of the frame.



Now you can manage the contents of a frame the way you want.

For example, the following code rotates the contents of the frame to a 45 degree angle.
  1. <Frame Source="Page1.xaml">
  2. <Frame.LayoutTransform>
  3. <RotateTransform Angle="45" />
  4. </Frame.LayoutTransform>
  5. </Frame>
The new output looks like this.



How to Navigate to a URI in a WPF Frame

The following code creates a Frame within a window and adds a button control to the window. On the button click event handler we will navigate to a URI using a Frame.
  1. <Window x:Class="FrameSample.Window1"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="Window1" Height="300" Width="300">
  5. <Grid>
  6. <TextBlock>Outside area of frame</TextBlock>
  7. <Frame Name="FrameWithinGrid" >
  8. </Frame>
  9. <Button Height="23" Margin="114,12,25,0"
  10. Name="button1" VerticalAlignment="Top" Click="button1_Click">Navigate to C# Corner
  11. </Button>
  12. </Grid>
  13. </Window>
The Navigate method of Frame is used to navigate to a URI. The following code navigates to Page1.xaml.
  1. private void button1_Click(object sender, RoutedEventArgs e)
  2. {
  3. FrameWithinGrid.Navigate(new System.Uri("Page1.xaml",
  4. UriKind.RelativeOrAbsolute));
  5. }
The following code navigates to an external website URL and opens the ASPX page within a Frame.
  1. FrameWithinGrid.Source = new Uri("http://www.c-sharpcorner.com/Default.aspx", UriKind.Absolute);
If you need to open a URI in a new browser window, the following code will do that. This code first creates a NavigationWindow and then sets its Source to a URI.
  1. NavigationWindow window = new NavigationWindow();
  2. Uri source = new Uri("http://www.c-sharpcorner.com/Default.aspx", UriKind.Absolute);
  3. window.Source = source; window.Show();