In order to detect whether your application is executing in a designer you can either use the
GetIsInDesignMode
method of
DesignerProperties
,
or the Dependency Property metadata directly like so:
C#:
bool designTime = (bool)DesignerProperties.IsInDesignModeProperty.GetMetadata(
typeof(DependencyObject)).DefaultValue
VB.NET:
dim designTime as Boolean = CBool(DesignerProperties.IsInDesignModeProperty.GetMetadata( _
GetType(DependencyObject)).DefaultValue
This can be then rolled into a static class like so:
C#:
public static class DesignTimeEnvironment
{
static bool? designTime;
public static bool DesignTime
{
get
{
if (!designTime.HasValue)
{
designTime = (bool)DesignerProperties.IsInDesignModeProperty.GetMetadata(
typeof(DependencyObject)).DefaultValue;
}
return designTime.Value;
}
}
}
VB.NET:
Public Class DesignTimeEnvironment
Public Shared ReadOnly Property DesignTime As Boolean
Get
If Not DesignTimeEnvironment.designTime.HasValue Then
DesignTimeEnvironment.designTime = New Boolean?(CBool( _
DesignerProperties.IsInDesignModeProperty.GetMetadata( _
GetType(DependencyObject)).DefaultValue))
End If
Return DesignTimeEnvironment.designTime.Value
End Get
End Property
Private Shared designTime As Boolean?
End Class