¿Hay una propiedad DesignMode en WPF?

En Winforms puedes decir

if ( DesignMode ) { // Do something that only happens on Design mode } 

¿hay algo como esto en WPF?

De hecho, hay :

System.ComponentModel.DesignerProperties.GetIsInDesignMode

Ejemplo:

 using System.ComponentModel; using System.Windows; using System.Windows.Controls; public class MyUserControl : UserControl { public MyUserControl() { if (DesignerProperties.GetIsInDesignMode(this)) { // Design-mode specific functionality } } } 

En algunos casos, necesito saber si el diseñador ha iniciado una llamada a mi clase que no pertenece a la UI (como si creara una clase DataContext de XAML). Entonces, el enfoque de este artículo de MSDN es útil:

 // Check for design mode. if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)) { //in Design mode } 

Para cualquier control WPF alojado en WinForms , DesignerProperties.GetIsInDesignMode(this) no funciona.

Entonces, creé un error en Microsoft Connect y agregué una solución:

 public static bool IsInDesignMode() { if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Contains( "VisualStudio" ) ) { return true; } return false; } 

Respuesta tardía, lo sé, pero para cualquier otra persona que quiera usar esto en un DataTrigger , o en cualquier lugar en XAML en general:

 xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=PresentationFramework"  

Usa este:

 if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { //design only code here } 

(Las operaciones de Async y File no funcionarán aquí)

Además, para instanciar un objeto de tiempo de diseño en XAML (d es el espacio de nombres de diseñador especial)

  ...