C# 我是否可以通过“初始化组件”从其他页面初始化另一个contentpage;点击";例如
您是否可以通过单击(从另一个页面)来“重新启动”/初始化页面?我正在使用一个包含主细节页和内容页的rootpage,我希望他们不要像现在这样一起初始化组件。 如果初始化组件问题不可行,则可以选择(如果可能)使用母版详细信息页图标创建clickevent 当然,如果我能以某种方式把这两页分开会更方便。我试图想出下面的东西,将初始化另一个页面组件C# 我是否可以通过“初始化组件”从其他页面初始化另一个contentpage;点击";例如,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,您是否可以通过单击(从另一个页面)来“重新启动”/初始化页面?我正在使用一个包含主细节页和内容页的rootpage,我希望他们不要像现在这样一起初始化组件。 如果初始化组件问题不可行,则可以选择(如果可能)使用母版详细信息页图标创建clickevent 当然,如果我能以某种方式把这两页分开会更方便。我试图想出下面的东西,将初始化另一个页面组件 button.Clicked += (object sender, EventArgs e) => { var ourStartPage = new
button.Clicked += (object sender, EventArgs e) => {
var ourStartPage = new StartPage ();
ourStartPage.InitializeComponent ();
}
只需在页面中创建一个公共方法,并让它调用InitializeComponent。我不认为这样处理页面生命周期是一个好主意,但从技术上讲,没有什么可以阻止您这样做。但是我如何访问其他页面初始化组件?当我执行上述代码时,当我当前在Masterdetailpage页面中工作时,我无法访问(例如)startpages Initializecomponent。我只能编写它并初始化当前页面和当前组件。也许我误解了你对公共方法的意思。你知道当我通过log System.Diagnostics.Debug.Writeline(“测试”)对其进行测试时它为什么会工作吗;但是,当我尝试改变标签的文本时,它不会改变吗?你是在尝试从公共方法来改变吗?我猜你不是在UI线程上调用它,就是调用了错误的页面实例。我都试图加载我想要加载的特定函数,也加载了整个页面(initializecomponent),但奇怪的是,它只在我测试它时在日志中起作用。但是当我试图让事情变得可见/改变文本等等的时候。什么也没发生。如果你觉得有点离题的话,今晚晚些时候我可以写一篇新文章。我遵循你的密码。当我通过日志对它进行测试时,它达到了这个功能,但当我尝试进行实际更改时,它不会运行。
public class Page1 : ContentPage {
public Page1() {
// comment out the default InitializeComponent()
// InitializeComponent();
}
// create a public method to do the init instead
public void InitThisPage() {
InitializeComponent();
}
}