在设计师中使用一种资源,在生产中使用一种资源。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在设计师中使用一种资源,在生产中使用一种资源。相关的知识,希望对你有一定的参考价值。

我正在开发Windows Phone 7应用程序,在其中对图像源属性进行数据绑定,并使用转换器生成图像。 像这样:

<Image Source="{Binding Image, Converter={StaticResource MyImageConverter}}"></Image>

这可以在模拟器上运行,但会使设计器崩溃,因为MyImageConverter依赖于设计器未实例化的其他代码。 有什么方法可以使设计人员忽略此属性,甚至更好,我可以指定仅由设计人员使用的另一个Source吗? 如果有问题,我正在使用Visual Studio 2010。

答案

如果“设计师”是指Blend或Cider(VS设计师),则可以使用以下内容查找您是否处于设计模式

public static bool IsInDesignMode
{
    get
    {
        return DesignerProperties.GetIsInDesignMode(new DependencyObject());
    }
}

然后相应地包装您的代码。

另一答案

最好的简单方法是在ViewModel的.ctor中使用IsInDesignMode:

if (IsInDesignMode) {
    //Design time data
} else {
    // production
}
另一答案

您可以在设计器中而不是在代码中分配Source属性,并使用条件编译:

#if DEBUG
  // assignments for development mode
#else
  // assignments for production mode 
#endif

以上是关于在设计师中使用一种资源,在生产中使用一种资源。的主要内容,如果未能解决你的问题,请参考以下文章

是否有一种生产安全的方法来测量使用 Python 在生产中花费的时间?

在生产中使用 Mandrill 发送设计电子邮件

dotenv 在生产中需要 .env 文件

宝石更新后:测试失败,“资产未声明为在生产中预编译”

在生产中使用实体框架(代码优先)迁移

在生产中使用“coffee”而不是“node”命令