Winform和WPF中关于是否处于设计模式的判断方式

在界面开发中,若在构造函数中增加了加载数据的代码,在设计界面时会出现界面打不开或者出现报错的情况。此时,可以检查一下是否为该情况。

Winform中的DesignMode判断

复制代码
	在WinForm开发中,一般会在窗体或者UserControl中判断当前是否为设计状态,如:
csharp 复制代码
if (!this.DesignMode)
{
    //
}

WPF中的DesignMode判断

WPF中提供你一个类似WinForm的DesignMode属性的方法来判断当前是否处于设计器模式:

csharp 复制代码
 bool IsInDesignMode
    {
        get { return DesignerProperties.GetIsInDesignMode(this); }
    }

对于非UI对象,要判断是否处于设计器模式,则可以这么使用:

csharp 复制代码
 bool IsInDesignMode
    {
        get { return DesignerProperties.GetIsInDesignMode(new DependencyObject()); }
    }
csharp 复制代码
  上述两种方式如果无法生效,可以选择下面的方式。无法生效的原因不清楚,有大佬知道可以评论区留言。
   bool IsInDesignMode
    {
        get
        {
            return (bool)DesignerProperties.IsInDesignModeProperty
                        .GetMetadata(typeof(DependencyObject)).DefaultValue;
        }
    }
复制代码
	这种方式没有UI线程的限制,感觉也是最稳定的一种方式,平时选择可以用这种方式。
相关推荐
曹牧8 小时前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#
LCG元13 小时前
现代Web应用高可用架构设计与性能调优实战
前端·wpf
jiayong2314 小时前
海量数据处理技术方案与实现原理
大数据·c#·linq
小二·17 小时前
向量数据库深度对比:PGVector vs Qdrant vs Milvus vs Chroma(附性能测试数据)
数据库·wpf·milvus
z落落18 小时前
C# 类与对象、字段、静态与非静态+四大访问修饰符
开发语言·c#
魔法阵维护师18 小时前
从零开发游戏需要学习的c#模块,第三十二章(Boss 战系统)
学习·游戏·c#
海清河晏11119 小时前
字符串匹配:BF算法与KMP算法
数据结构·算法·visual studio
魔法阵维护师19 小时前
从零开发游戏需要学习的c#模块,第三十三章(暂停菜单)
学习·游戏·c#
z落落20 小时前
C# Stack栈 / Queue队列+所有集合 终极一页汇总(全覆盖、零遗漏)
java·开发语言·c#