<Window x:Class="SimpleStyles.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="SimpleStyles" Background="#F8F8F8"> <ScrollViewer> <WrapPanel> <HeaderedItemsControl Header="Frame"> <StackPanel> <Frame Source="page1.xaml" Width="200" Height="200"/> </StackPanel> </HeaderedItemsControl> </WrapPanel> </ScrollViewer> </Window>
Author: coder
Frame Navigation Demo Window
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Title="Frame Navigation Demo" FontSize="24"> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Frame Grid.Row="0" Background="Aqua" Source="Page1.xaml" /> <Frame Grid.Row="1" Background="Pink" Source="Page2.xaml" /> </Grid> </Window>
Xaml frame on a Tab
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Microsoft.Samples.Graphics.UsingVisualBrush.SampleViewer" Title="VisualBrush Sample"> <DockPanel Background="White"> <TabControl Name="sampleSelector" Background="White" BorderBrush="Orange"> <TabItem Header="Painting with Visuals" > <Frame Source="PaintingWithVisuals.xaml" Background="White" /> </TabItem> <TabItem Header="Magnifying Glass Example" > <Frame Source="MagnifyingGlassExample.xaml" Background="White" /> </TabItem> <TabItem Header="Reflection Example" > <Frame Source="ReflectionExample.xaml" Background="White" /> </TabItem> </TabControl> </DockPanel> </Window>
Use a Frame control to navigate to Web pages and a Extensible Application Markup Language (XAML) page.
<Page x:Class="FrameExample.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel> <RadioButton Name="VisualBasic" Checked="BrowseAHomePage" GroupName="HomePages"> Visual Basic </RadioButton> <RadioButton Name="VisualCSharp" Checked="BrowseAHomePage" GroupName="HomePages"> Visual C# </RadioButton> <RadioButton Name="AnotherPage" Checked="BrowseAHomePage" GroupName="HomePages"> XAML Page </RadioButton> <Frame Name = "myFrame" Background="LightBlue"/> </StackPanel> </Page> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Input; using System.IO; using System.Net; namespace FrameExample { public partial class Page1 : Page { private void BrowseAHomePage(object sender, RoutedEventArgs e) { if ((Boolean)VisualBasic.IsChecked) myFrame.Navigate(new System.Uri("http://msdn.microsoft.com/vbasic/")); else if ((Boolean)VisualCSharp.IsChecked) myFrame.Navigate(new System.Uri("http://msdn.microsoft.com/vcsharp/")); else if ((Boolean)AnotherPage.IsChecked) myFrame.Navigate(new System.Uri("AnotherPage.xaml",UriKind.RelativeOrAbsolute)); } } }
Put a Frame tag onto a Window to host a page
<Window x:Class="WindowPageHost.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowWithFrame" Height="300" Width="392" > <Grid Margin="3"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <StackPanel> <Button Margin="3" Padding="3" Click="cmdClose_Click">Close</Button> </StackPanel> <Frame Grid.Column="1" Source="Page1.xaml" BorderBrush="Blue" BorderThickness="1"></Frame> </Grid> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace WindowPageHost { public partial class Window1 : System.Windows.Window { public Window1() { InitializeComponent(); } private void cmdClose_Click(object sender, RoutedEventArgs e) { this.Close(); } } }
Navigate Frame to a xaml document
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="FrameWindowSample.SDKViewerWindow" Title="SDK Viewer" Width="430" Height="400"> <StackPanel Margin="10,10,10,10"> <TextBlock> <Hyperlink Name="homeHyperlink" Click="homeHyperlink_Click">Home</Hyperlink> </TextBlock> <Frame Name="sdkFrame" Background="WhiteSmoke" Source="SDKFramePage.xaml" NavigationUIVisibility="Visible" /> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace FrameWindowSample { public partial class SDKViewerWindow : Window { public SDKViewerWindow() { InitializeComponent(); } void homeHyperlink_Click(object sender, RoutedEventArgs e) { this.sdkFrame.Navigate(new Uri("SDKFramePage.xaml", UriKind.Relative)); } } }
Navigate Frame to a URL
<Window x:Class="TreeViewDataBinding.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="TreeViewDataBinding" xmlns:EngNews="clr-namespace:TreeViewDataBinding"> <Window.Resources> <ObjectDataProvider x:Key="EasternHemisphereDataSource" ObjectType="{x:Type EngNews:WebSiteGroupA}"/> <ObjectDataProvider x:Key="WesternHemisphereDataSource" ObjectType="{x:Type EngNews:WebSiteGroupB}"/> <DataTemplate x:Key="NewspaperTVItem"> <DockPanel> <Image Source="c:image.jpg"/> <TextBlock VerticalAlignment="center" Text ="{Binding Path=Name}"/> </DockPanel> </DataTemplate> <DataTemplate x:Key="WesternHemisphereHeaderTemplate"> <DockPanel> <Ellipse Width="7" Height="7" Fill="Blue" DockPanel.Dock="Left"/> <TextBlock Margin="2,0,0,0" VerticalAlignment="Center" DockPanel.Dock="Right"> test </TextBlock> </DockPanel> </DataTemplate> <DataTemplate x:Key="EasternHemisphereHeaderTemplate"> <DockPanel> <Ellipse Width="7" Height="7" Fill="Blue" DockPanel.Dock="Left"/> <TextBlock DockPanel.Dock="Right">Eastern Hemisphere</TextBlock> </DockPanel> </DataTemplate> </Window.Resources> <StackPanel> <TreeView Name="WebSiteEntrys" SelectedItemChanged="SelectedNewspaperChanged"> <TreeViewItem HeaderTemplate="{StaticResource WesternHemisphereHeaderTemplate}" ItemsSource="{Binding Source={StaticResource WesternHemisphereDataSource}}" ItemTemplate="{StaticResource NewspaperTVItem}"/> <TreeViewItem HeaderTemplate="{StaticResource EasternHemisphereHeaderTemplate}" ItemsSource="{Binding Source={StaticResource EasternHemisphereDataSource}}" ItemTemplate="{StaticResource NewspaperTVItem}"/> </TreeView> <Frame Name = "NewspaperFrame" Content="this is a test."/> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Shapes; using System.Collections.ObjectModel; namespace TreeViewDataBinding { public partial class Window1 : Window{ public Window1(){ InitializeComponent(); } private void SelectedNewspaperChanged(object sender,RoutedPropertyChangedEventArgs<Object> e){ WebSiteEntry engnews = WebSiteEntrys.SelectedItem as WebSiteEntry; if( engnews != null ) NewspaperFrame.Navigate(new System.Uri(engnews.Website)); } } public class WebSiteEntry{ private string _name; private string _website; public string Website { get { return _website; } set { _website = value; } } public string Name { get { return _name; } set { _name = value; } } public WebSiteEntry(string name, string website) { Name = name; Website = website; } } public class WebSiteGroupA : ObservableCollection<WebSiteEntry> { public WebSiteGroupA() { Add(new WebSiteEntry("A","http://www.A.com")); Add(new WebSiteEntry("B","http://www.B.com")); Add(new WebSiteEntry("C","http://www.C.com")); } } public class WebSiteGroupB : ObservableCollection<WebSiteEntry> { public WebSiteGroupB() { Add(new WebSiteEntry("D","http://www.D.com/")); Add(new WebSiteEntry("E","http://www.E.net/")); Add(new WebSiteEntry("F","http://www.F.com")); } } }