DesignerProperties.IsInDesignMode和DesignerProperties.IsInDesignTool之间有什么区别?

时间:2012-01-15 12:48:10

标签: c# wpf silverlight

DesignerProperties使用GetIsInDesignMode(element)IsInDesignTool公开了两个类似的设计状态。

  • 他们之间有什么区别?
  • 为什么我要使用其中一个?

2 个答案:

答案 0 :(得分:1)

快速谷歌搜索显示,IsInDesignTool似乎适用于Silverlight和ExpressionBlend。所以也许IsInDesignMode是用于VS的东西,但其他人需要IsInDesignTool。

答案 1 :(得分:0)

它们完全相同

IsInDesignTool
"如果元素在设计器的上下文中运行,则为true;否则,错误。 " MDSDN of IsInDesignTool

GetIsInDesignMode(元素)
"元素的IsInDesignMode属性值。" MDSDN of GetIsInDesignMode(element)

然而,在每个蓝色的月亮中,Visual Studio都失败了

DesignerProperties.GetIsInDesignMode(this)

最好使用

return DesignerProperties.GetIsInDesignMode(this) || DesignerProperties.IsInDesignTool;

如果你不想让它崩溃。

.Net Reflector for Silverlight

public static bool GetIsInDesignMode(DependencyObject element)
{
    if (element == null)
    {
        throw new ArgumentNullException("element");
    }
    bool flag = false;
    if (Application.Current.RootVisual != null)
    {
        flag = (bool) Application.Current.RootVisual.GetValue(IsInDesignModeProperty);
    }
    return flag;
}


public static bool IsInDesignTool
{
    get
    {
        return isInDesignTool;
    }
    [SecurityCritical]
    set
    {
        isInDesignTool = value;
    }
}

internal static bool InternalIsInDesignMode
{
    [CompilerGenerated]
    get
    {
        return <InternalIsInDesignMode>k__BackingField;
    }
    [CompilerGenerated]
    set
    {
        <InternalIsInDesignMode>k__BackingField = value;
    }
}