コードが現在デザインモード(BlendやVisual Studioなど)で実行されているかどうかを確認できるように、利用可能なグローバル状態変数を知っている人はいますか?
次のようになります。
//pseudo code:
if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode)
{
...
}
これが必要な理由は、Expression Blendでアプリケーションをデザインモードで表示しているときに、デザイナーがデザインモードで表示できるモックデータを含む「Design Customerクラス」をViewModelで代わりに使用するためです。
ただし、アプリケーションが実際に実行されているときは、もちろん、ViewModelで実際のデータを返す実際のCustomerクラスを使用する必要があります。
現在私はこれを解決するために、デザイナーが作業する前に、ViewModelに移動して「ApplicationDevelopmentMode.Executing」を「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);
}
}
}