是否有办法从其他页面访问页面控件。我在 MainPage 中有一些控件,我想从包含列表视图的其他页面访问主页控件 TitleTextBlock 。我想在选择listview项目时更改 Mainpage TitleTextBlock.Text 。
我也试过,但TitleTextBlock.Text值不会改变。那有什么办法吗?
MainPage.xaml.cs中
public void ChangeTitle(string title)
{
TitleTextBlock.Text = title;
BackButton.Visibility = Visibility.Visible;
}
ContentPage.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;
}
ContentPage.xaml.cs
MainPage.HeaderTitleTextBlock.Text = link.Title;
MainPage.HeaderBackButton.Visibility = Visibility.Visible;
答案 0 :(得分:7)
您还可以使用public
属性将控件显示为x:FieldModifier
(这是WPF的默认行为):
<TextBlock x:FieldModifier="public" x:Name="MyTextBlock" />
这将使控件公开,并且可以从其他类访问它。
我写了一篇简短的博文:http://blog.mzikmund.com/2017/06/modifying-xaml-field-visibility/
答案 1 :(得分:0)
我用过的东西:
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应用程序中使用的层次结构。 希望这可以帮助。