繁体   English   中英

C# UWP - 如何从另一个页面访问页面控件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM