2016-08-15 9 views
0

私はいくつかのTextBlockとユーザーコントロールを持っている:UserControlからMainPage TextBlockテキストを変更するにはどうすればよいですか?私のメインページに

<Page 
    x:Class="MyProject.MainPage"> 
    <Grid> 
    <TextBlock x:Name="myTextBlock" Text="" /> 
    <MyUserControl x:Name = "userControl" /> 
    </Grid> 
</Page> 

にはどうすれmyTextBlockに、ユーザーコントロールのクラスからのアクセスを取得し、それがテキストだ変更できますか?

+4

でプロパティを定義します。 MyUserControlクラスを開き、TextBlockのTextプロパティをUserControlプロパティにバインドします。 – Clemens

答えて

0

答えてくれてありがとう、私は、デリゲートとイベントを使用することを決定し、このような何かをした:

MyUserControl

メインページに
private string myString; 
public delegate void MyEventHandler(string a); 
public event MyEventHandler MyPropertyChanged; 

public MyUserControl() 
{ 
    this.MyPropertyChanged+= new MyEventHandler(HandlePropertyChanging); 
} 

private void HandleCreditsChanging(string a) 
{ 
    a = myString; 
} 

で:

public MainPage() 
{ 
    myUserControl.MyPropertyChanged += MyUserControl_MyPropertyChanged; 
} 

private void MyUserControl_MyPropertyChanged(string a) 
{ 
    myTextBlock.Text = a; 
} 
0

バインドしようとしていないので、userControlがそのTextBlockにアクセスできる方法が必要です。 最も簡単な方法は、UserControl内のパブリックTextBlockプロパティを使用し、xamlまたはTextBlockの背後にあるコードでこのプロパティを設定することです。

あなたはUserControl内のプロパティでTextBlock Textを簡単に取得できます。

もう1つの方法は、UserControlのParntプロパティを使用して、そこにすべての兄弟の子を取得し、次に目的の子を取得することです。

関連する問題