0

我经常会使用声明性 DataContext 设置 WPF UserControl:

<UserControl...>
    <UserControl.DataContext>
        <local:SomeModel x:Name="Model" />
    </UserControl.DataContext>
</UserControl>

在设计模式下,Visual Studio 将尝试实例化 DataContext。但是,当 DataContext 从配置文件中提取数据时,Visual Studio 2010 会抛出如下错误:

无法创建“SomeModel”的实例。

当错误被抛出时,设计时经验几乎没有价值。如果我注释掉 DataContext,那么 Visual Studio 2010 设计模式将按预期工作,没有 DataContext。

有没有办法让 Visual Studio 在设计时忽略 XAML 声明的 DataContext?

4

2 回答 2

4

覆盖(或用“新”隐藏)您的数据上下文并使用 System.ComponentModel.DesignerProperties.GetIsInDesignMode() 返回适当的上下文。

对于加分,将您的条件分解包装在预处理器指令中和/或使用明智的 ConditionalAttribute() 以确保这种额外的噪音不会进入生产环境。

于 2010-07-22T00:03:34.520 回答
1

不确定我是否完全理解,但我使用此扩展方法来检测设计器何时运行我的代码:

public static class Extensions
{
    public static bool IsDesigner( this Process process )
    {
        if ( process.MainModule != null )
            return ( process.MainModule.ModuleName.Contains( "devenv.exe" ) );

        return false;
    }
}
于 2010-07-21T23:17:46.910 回答