【发布时间】:2018-01-08 12:28:04
【问题描述】:
有没有办法从另一个页面访问页面控件。我的 MainPage 中有一些控件,我想从另一个包含列表视图的页面访问 Mainpage Controls TitleTextBlock。我想在选择列表视图项目时更改 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;
【问题讨论】:
-
您没有在现有窗口上工作,即您正在创建 MainPage 的新实例并对其进行操作,这不会影响当前打开的 MainPage,您必须传递已经实例化的 MainPage 的引用并对其进行操作。
-
考虑使用view model
-
您能详细说明一下吗? - sashikant_
-
WPF 和它的后续 UWP 是专门为考虑到 MVVM 模式而设计的。虽然您可以应用较旧的技术,但它们会丢失大约 90% 的能力。如果您使用 MVVM,则不存在问题:您当前显示的视图模型的哪一部分不会改变整个事物都在内存中。如果您需要对该模式进行简短介绍,几年前我写了一些东西:social.msdn.microsoft.com/Forums/vstudio/en-US/…