有时当我写作时,我必须编辑TextBlock中的文本,这是在其他页面上,然后我做了这个伎俩:
private static MainPage _gui;
public static void SetTitleText(string text) => _gui.TitleText.Text = text;
public static Visibility InfoCenterStackPanelVisibility
{
get { return _gui.InfoCenterStackPanel.Visibility; }
set { _gui.InfoCenterStackPanel.Visibility = value; }
}
public MainPage()
{
InitializeComponent();
_gui = this;
}
在其他页面中,我只需拨打MainPage.SetTitleText
等;
我想知道,在没有创建_gui
的情况下,还有其他更好的方式来访问这些项目吗?
ps我寻找任何可能看的主题,我没有找到答案
答案 0 :(得分:2)
通常这是一个坏主意,因为如果你的应用程序变得足够复杂,你最终会遇到MainPage
在运行时不存在的情况,因此当你尝试访问(null)时会崩溃静态实例。例如,如果您在多页应用程序中实现Suspend / Terminate / Resume,或者您实现了Share这样的合同,则可能会发生这种情况。即使您当前的项目很简单,如果您将来构建更大的应用程序,这也是一个坏习惯。
通常,您会使用MVVM approach在数据模型中包含此信息,然后MainPage
将仅绑定到数据模型(或显式读取其中的值)。 MVVM有很多网络资源 - 只需使用您最喜欢的搜索引擎。