在UWP中的一个页面类中创建同一个实例是个好主意吗?

时间:2016-11-12 18:51:25

标签: c# xaml uwp

有时当我写作时,我必须编辑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我寻找任何可能看的主题,我没有找到答案

1 个答案:

答案 0 :(得分:2)

通常这是一个坏主意,因为如果你的应用程序变得足够复杂,你最终会遇到MainPage在运行时不存在的情况,因此当你尝试访问(null)时会崩溃静态实例。例如,如果您在多页应用程序中实现Suspend / Terminate / Resume,或者您实现了Share这样的合同,则可能会发生这种情况。即使您当前的项目很简单,如果您将来构建更大的应用程序,这也是一个坏习惯。

通常,您会使用MVVM approach在数据模型中包含此信息,然后MainPage将仅绑定到数据模型(或显式读取其中的值)。 MVVM有很多网络资源 - 只需使用您最喜欢的搜索引擎。