Czy ktoś wie o jakiejś globalnej zmiennej stanu, która jest dostępna, abym mógł sprawdzić, czy kod jest obecnie wykonywany w trybie projektowania (np. W Blend lub Visual Studio), czy nie?
Wyglądałoby to mniej więcej tak:
//pseudo code:
if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode)
{
...
}
Powód, dla którego tego potrzebuję, jest następujący: kiedy moja aplikacja jest wyświetlana w trybie projektowania w programie Expression Blend, chcę, aby ViewModel zamiast tego używał „klasy Design Customer”, która zawiera makiety danych, które projektant może wyświetlać w trybie projektowania.
Jednak gdy aplikacja jest faktycznie wykonywana, oczywiście chcę, aby ViewModel używał prawdziwej klasy Customer, która zwraca rzeczywiste dane.
Obecnie rozwiązuję ten problem, prosząc projektanta, zanim zacznie nad tym pracować, wchodząc do ViewModel i zmieniając „ApplicationDevelopmentMode.Executing” na „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);
}
}
}