2012-12-28 61 views
2

默認情況下,所有代碼隱藏類都從PhoneApplicationPage繼承。我想提出一個子類的PhoneApplicationPage,並以此作爲基礎,我的代碼隱藏類,像這樣:從PhoneApplicationPage的子類繼承代碼隱藏類

namespace Test 
{ 
    public partial class HistoryRemoverPage : PhoneApplicationPage 
    { 
     protected override void OnNavigatedTo 
      (NavigationEventArgs e) 
     { 
      if (e.NavigationMode == NavigationMode.New) 
       NavigationService.RemoveBackEntry(); 
     } 
    } 
} 

namespace Test 
{ 
    public partial class MainPage : HistoryRemoverPage 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

當我嘗試編譯我的應用程序出現以下錯誤:

Error 1 Partial declarations of 'Test.MainPage' must not specify different base classes

我相信這在MainPage.xaml指向PhoneApplicationPage,而不是我的子類與下面的聲明做:

phone:PhoneApplicationPage ...

但我不明白怎麼到f ix這個。有什麼建議?

回答

6

是的,你是在正確的軌道上。你需要在你MainPage.xaml改變根元素到您的自定義的基類:

<test:HistoryRemoverPage x:Class="Test.MainPage"     
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    <!-- ... ---> 
    xmlns:test="clr-namespace:Test"> 

     <!--LayoutRoot is the root grid where all page content is placed--> 
     <Grid x:Name="LayoutRoot" Background="Transparent"> 
       <!-- ... ---> 
     </Gird>  

</test:HistoryRemoverPage> 

注意,你需要以指定XAML的基礎類添加你的基類的命名空間(xmlns:test)。

+0

嗨nemesv,我不能得到解決方案。在xaml中,當鼠標懸停到 neobie

+0

你確定已經包含'xmlns:test =「clr-namespace:Test」'並且它正確地指向包含你的基類的程序集嗎?你有沒有試圖重建你的項目? – nemesv