2016-05-24 2 views
0

私はXamarin.Formsアプリケーションを構築しています。Xamarin.FormsでUIコンポーネントが常に非公開になるのはなぜですか?

マイビュー:

<?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="TestApp.Mobile.Views.MainView"> 
    <Grid> 
    <Frame x:Name="TheFrame" /> 
    </Grid> 
</ContentPage> 

が続いApp.csでは、私はTheFrameにアクセスしたいです。このように:

MainView mainWindow = new MainView(); 
someFunction(mainWindow.TheFrame); 

でも!これは、自動生成MainView.csがどのように見えるかです:

public partial class MainView : ContentPage { 

    private Frame MainFrame; 

    private void InitializeComponent() { 
     this.LoadFromXaml(typeof(MainView)); 
     MainFrame = this.FindByName<Frame>("MainFrame"); 
    } 
} 

WHY ?! App.csでTheFrameにアクセスするにはどうすればよいですか?

+0

他のクラスのUI要素に直接アクセスすることは、一般的にデザインが悪いことの兆候です。これを本当に行う必要がある場合は、ページ上のプライベート要素に必要なアクセスを提供するパブリックプロパティまたはメソッドを追加できます。 – Jason

答えて

0

x:Nameプロパティを使用して、コードビハインドからFrameにアクセスすることはできます。 App.csからアクセスする必要があるのはなぜですか?

FrameApp.csに宣言し、それをページに追加すると、どこからでもアクセスできます。

+0

私のナビゲーションクラスに 'Frame'を渡す必要があります。これはアプリケーションのナビゲーションを処理します。 – Sara

+0

@Saraナビゲーション用の特定の 'フレーム'がなぜ必要なのか、まだ混乱しています。 'Frame'を複数のページで使用しようとしていますか、' Frame'をクリックするとどこかをナビゲートしようとしていますか?または、他の何か? – hvaughan3

関連する問題