C# 预处理器 - 禁用 XAML 设计器的代码

本文关键字:代码 XAML 预处理 处理器 禁用 | 更新日期: 2023-09-27 17:57:11

不幸的是,我发现有时我正在编写的代码虽然在运行时完全没问题,但在Visual Studio 2010中使用XAML/Designer时会让我头疼。 我最喜欢的示例包括多个用于调试的 MessageBox,但是,当前示例是构造函数中非常轻的单例样式条件,这意味着当我想要对 XAML 中的实例进行更改时,我必须重新生成解决方案。

是否有可用于跳过 XAML 设计器中的代码的预处理器指令?

例:

    public class CustomFE : FrameworkElement
    {
        public CustomFE()
        {
#if !XAMLDesigner // Or something similar
            if (_instance != null)
                throw new NotSupportedException("Multiple instances not supported");
#endif
            _instance = this;
        }
        private static CustomFE _instance = null;
        public static CustomFE Instance
        {
            get { return _instance; }
        }
    }

C# 预处理器 - 禁用 XAML 设计器的代码

您可以使用 DesignerProperties.GetIsInDesignMode 方法,如下所示:

if (!DesignerProperties.GetIsInDesignMode(this) && _instance != null)
    throw new NotSupportedException(...)