如何检测表单预览器模式?

时间:2017-03-23 14:07:19

标签: xamarin.forms

Visual Studio 2017引入了一个新窗口来帮助进行移动开发 - “窗体预览器”窗口。

有没有人发现如何检测这种模式呢?

我有一些遥测代码,它会抛出异常,因为它尚未初始化 - 因此需要检测这种“设计”模式。

2 个答案:

答案 0 :(得分:2)

现在Xamarin.Forms直接支持此功能,您可以使用其内置的Xamarin.Forms.DesignMode类:

if (DesignMode.IsDesignModeEnabled)
{
  // Previewer only code  
}

请参见https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-previewer

答案 1 :(得分:1)

以前,如果未创建应用实例,则可以检测设计模式,如下所示:

if (Application.Current==null) 
{  
    // design mode
}

在Xamarin Studio 6.2中,即使在设计模式下也会创建应用程序实例,因此我们无法像这样使用它。您可以做的是创建自定义标志IsInDesignMode = true并将其从未在设计模式下运行的位置更改为false,如OnStart:

protected override void OnStart()
{
    FakeViewModels.IsInDesignMode = false;
}

然后在任何地方使用它:

if (FakeViewModels.IsInDesignMode == false) 
{
    this.BindingContext = this;
}

还记得App()构造函数,因此第一次导航发生在OnStart()之前,所以使用上面的方法不会涵盖你导航到的第一页。