![](/img/trans.png)
[英]C# WPF : how can i access page controls from another page to get textbox.text
[英]C# UWP - How to access page controls from another page?
有没有办法从另一个页面访问页面控件。 我的MainPage 中有一些控件,我想从包含列表视图的另一个页面访问 Mainpage Controls TitleTextBlock 。 我想在选择列表视图项时更改主页 TitleTextBlock.Text 。
我也尝试过,但 TitleTextBlock.Text 值没有改变。 所以有什么办法吗??
主页.xaml.cs
public void ChangeTitle(string title)
{
TitleTextBlock.Text = title;
BackButton.Visibility = Visibility.Visible;
}
内容页面.xaml.cs
private void ListView_ItemClick(object sender, ItemClickEventArgs e)
{
var link = (Link)e.ClickedItem;
this.Frame.Navigate(typeof(WebViewPage), link);
MainPage p = new MainPage();
p.ChangeTitle(link.Title);
}
更新我通过很少的更改解决了这个问题MainPage.xaml.cs
public static TextBlock HeaderTitleTextBlock { get; set; }
public static Button HeaderBackButton { get; set; }
public MainPage()
{
this.InitializeComponent();
HeaderTitleTextBlock = TitleTextBlock;
HeaderBackButton = BackButton;
}
内容页面.xaml.cs
MainPage.HeaderTitleTextBlock.Text = link.Title;
MainPage.HeaderBackButton.Visibility = Visibility.Visible;
您还可以使用x:FieldModifier
属性使控件显示为public
(这是 WPF 的默认行为):
<TextBlock x:FieldModifier="public" x:Name="MyTextBlock" />
这将使控件公开,并且可以从其他类访问。
我写了一篇关于此的简短博客文章: http : //blog.mzikmund.com/2017/06/modifying-xaml-field-visibility/
我用过的:
Frame contentFrame = Window.Current.Content as Frame;
MainPage mp = contentFrame.Content as MainPage;
Grid grid = mp.Content as Grid;
TextBlock my_textblock = grid.FindName("my_textblock") as TextBlock;
my_textblock.Text = "Edited the TextBlock";
当然,层次结构 Frame>Page>Grid>TextBlock 是我在 UWP 应用中使用的层次结构。 希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.