有没有一种方法可以检查WPF当前是否在设计模式下执行?
有没有一种方法可以检查WPF当前是否在设计模式下执行?
是否有全局状态变量可用,以便我可以检查代码当前是否在设计模式下执行(例如在Blend或Visual Studio中)?
它看起来像这样:
//pseudo code: if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode) { ... }
我需要这个的原因是:当我的应用在Expression Blend的设计模式中显示时,我希望ViewModel使用“设计客户类”,其中包含设计师可以在设计模式下查看的模拟数据。
但是,当应用程序实际执行时,我当然希望ViewModel使用返回真实数据的真实客户类。
目前,我通过让设计师在开始工作之前进入ViewModel并将“ApplicationDevelopmentMode.Executing”更改为“ApplicationDevelopmentMode.Designing”来解决这个问题:
public CustomersViewModel() { _currentApplicationDevelopmentMode = ApplicationDevelopmentMode.Designing; } public ObservableCollection GetAll { get { try { if (_currentApplicationDevelopmentMode == ApplicationDevelopmentMode.Developing) { return Customer.GetAll; } else { return CustomerDesign.GetAll; } } catch (Exception ex) { throw new Exception(ex.Message); } } }
admin 更改状态以发布 2023年5月23日
我认为你正在寻找GetIsInDesignMode,它需要一个DependencyObject参数。
即:
// 'this' is your UI element DesignerProperties.GetIsInDesignMode(this);
编辑: 当使用Silverlight / WP7时,应该使用IsInDesignTool
,因为GetIsInDesignMode
有时会在Visual Studio中返回false:
DesignerProperties.IsInDesignTool
编辑: 最后,为了完整起见,在WinRT / Metro / Windows Store应用程序中,相当的属性是DesignModeEnabled
:
Windows.ApplicationModel.DesignMode.DesignModeEnabled