2013-07-31 55 views
0

我試圖導航到WPF應用程序中從我的主窗口不同的頁面。 MainWindow只有一些歡迎文本,我希望它在4秒後移動到另一個頁面。定時器工作正常,但我得到一個錯誤,說:基於定時器導航到WPF頁面

「錯誤1'UbiTutorial.MainWindow'不包含'框架'的定義和沒有擴展方法'框架'接受類型的第一個參數' UbiTutorial.MainWindow「可以找到(你是否缺少使用指令或程序集引用?)c:\ users \ thomas \ documents \ visual studio 2012 \ Projects \ UbiTutorial \ UbiTutorial \ MainWindow.xaml.cs 54 22 UbiTutorial」

在我的方法

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

的Visual Studio抱怨它的框架的一部分。

回答

0

Frame是一個控制類型不是控制實例,沒有看到你的Xaml我不知道你添加的框架的名稱是什麼,它可能默認爲frame1這就是你將需要用來訪問導航方法。希望這會給你一個想法。

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> 
+0

謝謝你,我有戈特那工作。我的下一步是根據框架中當前頁面上的事件導航到其他頁面。一旦用戶完成了某件事,請加載下一頁。具體來說,如果用戶在頁面上觸摸了5秒鐘,請加載下一頁。有沒有一種方法可以將框架作爲參數傳遞給每個頁面,以便我可以將代碼放入當前頁面以加載下一頁,或者是通過將信息從當前頁面返回給MainWindow告訴它將新頁面加載到框架上?謝謝! @ mark-hall –

+0

@ThomasCrosley您是使用MVVM還是僅僅使用代碼?就我個人而言,我會讓MainWindow處理它,使頁面引發事件並使用它來確定何時交換頁面。 –

+0

我只是使用後面的代碼。你會推薦使用MVVM嗎?我也喜歡MainWindow方法,特別是如果我有一天想擺脫一頁或交換他們的訂單。 –