2017-06-30 1 views
0

、私は、このようなサブクラス、ページを作成しようとしている:これらのページの'ページ'タイプから継承するXamarinフォームクラス階層を作成するにはどうすればよいですか? Xamarin.Formsで

public partial class PageA : ContentPage { 
    public PageA() {InitializeComponent();} 
} 

public partial class PageB : PageA { 
    public PageB() : base() { ... } 
} 

の両方が、コード尻とXAMLページですが、ページBのページが動作してIされていませんがなぜわからないのですか(私はXAML、Xamarin、C#の初心者ですが、基本的には一般的にコーディングしています)。

このライン以来、私は、現時点でのコードをコンパイルすることはできません

this.FindByName<Label> 

は私の警告を与える:

ページBには「FindByName」の定義が含まれていない、と

:最高の拡張メソッドは、...「要素」

そして、このラインをタイプの受信機が必要です

await Navigation.PushAsync(new PageB()); 

は、PageBがXamarin.Forms.Pageではないというエラーを返します。私はなぜPageAがそのようなタイプと考えられるのか分からないが、そうである。

質問:

  1. は、カスタムページのサブクラスを作成することが可能ですか?
  2. ContentPage(PageA)をサブクラス化するクラスが、 'Element'型と 'Page'型の両方であると考えられるのはなぜですか?なぜPageBはこれらのタイプのものとみなされないのですか?

私はここで多くのことが激しくなっていると思うので、どのように私が質問しているのか、どのような疑問を指摘したのかについての訂正は大歓迎です!

===========以下のコメントに応答して、EDIT

ページA

は.csファイル(分離コード)は、名前空間を持っていますClass属性値x:Class="AppName.FolderName.PageA"

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="AppName.FolderName.PageA"> 

      ... (some elements) ... 

</ContentPage> 
AppName.FolderName、およびXAMLは、xを持っています

ページB

。CSファイル(分離コード)は、名前空間AppName.FolderName.SubFolderNameを持っており、XAMLは、xがあります:Class属性値x:Class="AppName.FolderName.SubFolderName.PageB"

をそして私は私にPageAクラス

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="AppName.FolderName.SubFolderName.PageB"> 
</ContentPage> 
+0

Xamlコードもどうぞ?コードのネームスペースは後ろにありますか? – BraveHeart

答えて

1

へのアクセスを提供し、次のusing AppName.FolderNameとの参照を、持っていますFYIこのコードは、実施例

である私のアプリからである。この

をお試しください

今派生ページは、csがこの

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

using Xamarin.Forms; 

namespace Sthotraani.Views 
{ 
    public partial class LoginPage : BasePage 
    { 
    } 
} 
のように見えるこの

<?xml version="1.0" encoding="utf-8" ?> 
<views:BasePage xmlns="http://xamarin.com/schemas/2014/forms" 
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
       xmlns:views="clr-namespace:Sthotraani.Views;assembly=Sthotraani" 
       x:Class="Sthotraani.Views.LoginPage" 
       BackgroundColor="#009688" 
       xmlns:controls="clr-namespace:Sthotraani.CustomControls;assembly=Sthotraani" 
       xmlns:converters="clr-namespace:Sthotraani.Converters;assembly=Sthotraani" 
       xmlns:behaviors="clr-namespace:Sthotraani.Behaviors;assembly=Sthotraani"> 

</views:BasePage> 

派生ページのように見えます

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

using Xamarin.Forms; 

namespace Sthotraani.Views 
{ 
    public partial class BasePage : ContentPage 
    { 
     public BasePage() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

CS

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="Sthotraani.Views.BasePage"> 

</ContentPage> 

以下のようにあなたのベースページをベースページを作成します。
関連する問題