Thomas Crosley
Thomas Crosley

Reputation: 51

Navigating to wpf page based on timer

I'm trying to navigate to a different page from my MainWindow in a WPF application. The MainWindow just has some welcome text and I want it to move to another page after 4 seconds. The timer is working just fine but I am getting an error that says,

"Error 1 'UbiTutorial.MainWindow' does not contain a definition for 'Frame' and no extension method 'Frame' accepting a first argument of type 'UbiTutorial.MainWindow' could be found (are you missing a using directive or an assembly reference?) c:\users\thomas\documents\visual studio 2012\Projects\UbiTutorial\UbiTutorial\MainWindow.xaml.cs 54 22 UbiTutorial"

in my method

if (introTime > 4)
{
    this.Frame.Navigate(typeof(Touch));
}

Visual Studio is complaining about the Frame part of it.

Upvotes: 0

Views: 1523

Answers (1)

Mark Hall
Mark Hall

Reputation: 54552

Frame is a Control Type not a Control Instance, without seeing your Xaml I have no idea of what the name of the Frame that you added is, it probably defaulted to frame1 that is what you will need to use to access the Navigate Method. Hopefully this will give you an idea.

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Frame Height="100" HorizontalAlignment="Left" Margin="10,10,0,0" Name="frame1" VerticalAlignment="Top" Width="200" />
    </Grid>
</Window>

MainWindow.xaml.cs

using System.Windows.Threading;

namespace WpfApplication1
{
     /// <summary>
     /// Interaction logic for MainWindow.xaml
     /// </summary>
     public partial class MainWindow : Window
     {
         DispatcherTimer introTime = new DispatcherTimer();
         public MainWindow()
         {
             InitializeComponent();
             introTime.Interval = TimeSpan.FromSeconds(4);
             introTime.Tick += new EventHandler(introTime_Tick);
             introTime.Start();
         }

         void introTime_Tick(object sender, EventArgs e)
         {
             //this.frame1.Navigate(new Uri(@"http://www.google.com"));
             this.frame1.Navigate(new UserControl1());
         }
     }
 }

UserControl1.xaml

<UserControl x:Class="WpfApplication1.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" Background="Red" >
    <Grid>

    </Grid>
</UserControl>

Upvotes: 1

Related Questions