有没有一种方法可以检查WPF当前是否在设计模式下执行?

14 浏览
0 Comments

有没有一种方法可以检查WPF当前是否在设计模式下执行?

是否有全局状态变量可用,以便我可以检查代码当前是否在设计模式下执行(例如在Blend或Visual Studio中)?

它看起来像这样:

//pseudo code:
if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode) 
{
    ...
}

我需要这个的原因是:当我的应用在Expression Blend的设计模式中显示时,我希望ViewModel使用“设计客户类”,其中包含设计师可以在设计模式下查看的模拟数据。

但是,当应用程序实际执行时,我当然希望ViewModel使用返回真实数据的真实客户类。

目前,我通过让设计师在开始工作之前进入ViewModel并将“ApplicationDevelopmentMode.Executing”更改为“ApplicationDevelopmentMode.Designing”来解决这个问题:

public CustomersViewModel()
{
    _currentApplicationDevelopmentMode = ApplicationDevelopmentMode.Designing;
}
public ObservableCollection GetAll
{
    get
    {
        try
        {
            if (_currentApplicationDevelopmentMode == ApplicationDevelopmentMode.Developing)
            {
                return Customer.GetAll;
            }
            else
            {
                return CustomerDesign.GetAll;
            }
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
}

admin 更改状态以发布 2023年5月23日
0
0 Comments

你可以像这样做:

DesignerProperties.GetIsInDesignMode(new DependencyObject());

0
0 Comments

我认为你正在寻找GetIsInDesignMode,它需要一个DependencyObject参数。

即:

// 'this' is your UI element
DesignerProperties.GetIsInDesignMode(this);

编辑: 当使用Silverlight / WP7时,应该使用IsInDesignTool,因为GetIsInDesignMode有时会在Visual Studio中返回false:

DesignerProperties.IsInDesignTool

编辑: 最后,为了完整起见,在WinRT / Metro / Windows Store应用程序中,相当的属性是DesignModeEnabled:

Windows.ApplicationModel.DesignMode.DesignModeEnabled

0