Kennt jemand eine globale Statusvariable, die verfügbar ist, damit ich überprüfen kann, ob der Code derzeit im Entwurfsmodus ausgeführt wird (z. B. in Blend oder Visual Studio) oder nicht?
Es würde ungefähr so aussehen:
//pseudo code:
if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode)
{
...
}
Der Grund, warum ich dies benötige, ist: Wenn meine Anwendung in Expression Blend im Entwurfsmodus angezeigt wird, möchte ich, dass das ViewModel stattdessen eine "Design-Kundenklasse" verwendet, die Scheindaten enthält, die der Designer im Entwurfsmodus anzeigen kann.
Wenn die Anwendung jedoch tatsächlich ausgeführt wird, möchte ich natürlich, dass das ViewModel die echte Kundenklasse verwendet, die echte Daten zurückgibt.
Derzeit löse ich dieses Problem, indem der Designer, bevor er daran arbeitet, das ViewModel aufruft und "ApplicationDevelopmentMode.Executing" in "ApplicationDevelopmentMode.Designing" ändert:
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);
}
}
}