如何从 UserControl 更改 MainPage TextBlock 文本?
How to change MainPage TextBlock text from UserControl?
在我的主页中,我有一些 TextBlock 和 UserControl:
<Page
x:Class="MyProject.MainPage">
<Grid>
<TextBlock x:Name="myTextBlock" Text="" />
<MyUserControl x:Name = "userControl" />
</Grid>
</Page>
如何从 userControl class 访问 myTextBlock 并更改其文本?
由于您没有尝试绑定它们,因此您的 userControl 应该有一种方法可以访问该 TextBlock。
最简单的方法是在 UserControl 中使用 public TextBlock 属性 并在 xaml 或 TextBlock 后面的代码中设置此 属性。
之后,您可以轻松地在 UserControl 中的 属性 中获取 TextBlock 文本。
另一种选择是使用 UserControl 的 Parnt 属性 并尝试将所有同级子项都放在那里,然后选择所需的。
感谢您的回答,但我决定使用委托和事件,并做了如下操作:
在我的用户控件中
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;
}
在我的主页中,我有一些 TextBlock 和 UserControl:
<Page
x:Class="MyProject.MainPage">
<Grid>
<TextBlock x:Name="myTextBlock" Text="" />
<MyUserControl x:Name = "userControl" />
</Grid>
</Page>
如何从 userControl class 访问 myTextBlock 并更改其文本?
由于您没有尝试绑定它们,因此您的 userControl 应该有一种方法可以访问该 TextBlock。 最简单的方法是在 UserControl 中使用 public TextBlock 属性 并在 xaml 或 TextBlock 后面的代码中设置此 属性。
之后,您可以轻松地在 UserControl 中的 属性 中获取 TextBlock 文本。
另一种选择是使用 UserControl 的 Parnt 属性 并尝试将所有同级子项都放在那里,然后选择所需的。
感谢您的回答,但我决定使用委托和事件,并做了如下操作:
在我的用户控件中
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;
}