2016-08-15 3 views
0

В моей главной странице у меня есть некоторые TextBlock и UserControl:Как изменить текст TextBlock MainPage из UserControl?

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

Как я могу получить доступ из класса UserControl в 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; 
} 

В MainPage:

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

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

Поскольку вы не пытаетесь связать их, должен быть способ, которым ваш userControl должен получить доступ к этому TextBlock. Самый простой способ - использовать общедоступное свойство TextBlock внутри UserControl и установить это свойство в том, находится ли xaml или код с TextBlock.

После этого вы можете легко получить текст TextBlock в свойстве внутри вашего UserControl.

Другой вариант - использовать свойство Parnt UserControl и попытаться найти там всех детей-сиблингов, а затем выбрать нужные.