有没有人知道一些全局状态变量,这样我就可以检查代码当前是否在设计模式下执行(例如在Blend或Visual Studio中)?
它看起来像这样:
//pseudo code:
if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode)
{
...
}
我需要这样做的原因是:当我的应用程序在Expression Blend中以设计模式显示时,我希望ViewModel改为使用"Design Customer类“,其中包含设计器可以在设计模式下查看的模拟数据。
但是,当应用程序实际执行时,我当然希望ViewModel使用返回真实数据的实际Customer类。
目前我解决这个问题的方法是让设计者在开发之前进入ViewModel并将"ApplicationDevelopmentMode.Executing“更改为"ApplicationDevelopmentMode.Designing":
public CustomersViewModel()
{
_currentApplicationDevelopmentMode = ApplicationDevelopmentMode.Designing;
}
public ObservableCollection<Customer> GetAll
{
get
{
try
{
if (_currentApplicationDevelopmentMode == ApplicationDevelopmentMode.Developing)
{
return Customer.GetAll;
}
else
{
return CustomerDesign.GetAll;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
发布于 2009-05-07 12:20:44
我相信你要找的是需要DependencyObject的GetIsInDesignMode。
即。
// 'this' is your UI element
DesignerProperties.GetIsInDesignMode(this);
编辑:使用Silverlight / WP7时,您应该使用IsInDesignTool
,因为在Visual Studio中,GetIsInDesignMode
有时会返回false:
DesignerProperties.IsInDesignTool
编辑:,最后,为了完整起见,WinRT / Metro / Windows Store应用程序中的等价物是DesignModeEnabled
Windows.ApplicationModel.DesignMode.DesignModeEnabled
发布于 2009-05-07 12:19:19
你可以这样做:
DesignerProperties.GetIsInDesignMode(new DependencyObject());
发布于 2013-11-14 21:39:52
public static bool InDesignMode()
{
return !(Application.Current is App);
}
随时随地都能工作。我使用它来阻止数据绑定视频在设计器中播放。
https://stackoverflow.com/questions/834283
复制相似问题