2016-07-20 92 views
0

私はいくつかのコントロールとフレーム "f"を持つウィンドウ "w"を持っています。私はページ "p1、p2、.."を使って "f"を置き換えます。私は "p1"から "w"のコントロールにアクセスしたい。どうやってやるの?WPFの子ページから親ウィンドウのコントロールにアクセスするにはどうすればよいですか?

"w.xaml":

<Window x:Class="WpfApplication.w"> 
    <Grid> 
     <TextBox x:Name="textBox_1" /> 
     <Frame x:Name="mainFrame" /> 
    </Grid> 
</window> 

"p1.xaml":

<Page x:Class="WpfApplication.p1"> 
    <Grid> 
     <Button x:Name="button_1" 
      Click="Button_Click" /> 
    </Grid> 

"p1.xaml.cs":

private void Button_Click_Upload(object sender, RoutedEventArgs e) 
{ 
    //set text of textBox_1 
} 

答えて

0

あなたは

private void Button_Click_Upload(object sender, RoutedEventArgs e) 
{ 
    ((w)App.Current.MainWindow).textBox_1.Text = "Your Text"; 
    //or 
    ((w)Window.GetWindow(this)).textBox_1.Text = "Your Text"; 
} 
+0

第一及び第二作業1ではなく、第三いずれかを行うことができます。エラーが表示されます: 'MainWindow'に 'Current'の定義が含まれていません –

+0

私の悪いですが、間違いです。 – KANAX

0

の場合あなたは緊密なカップリングに反対しているわけではなく、単に "w"を "p1"とプロpertyまたはコンストラクタのパラメータを使用します。あなたの結合を少し緩めるために、インタフェース 'Iw'を追加したいかもしれません。 もう1つの方法は、p1にアクセスする必要があるwの子の依存関係プロパティを追加し、相対バインドを使用してそれらをバインドすることです。 P.P. いくつかのコードを表示していれば、後で何を理解するのがはるかに簡単です。

+0

例下さい:) – Yash

関連する問題