Препроцессор C # - отключение кода для конструктора XAML - PullRequest
5 голосов
/ 20 мая 2011

К сожалению, я обнаружил, что иногда код, который я пишу, хотя и прекрасно работает во время выполнения, вызывает головную боль при работе с XAML / Designer в Visual Studio 2010. Однако мои любимые примеры включают в себя несколько MessageBox для отладки.текущий пример - это очень легкое условие в стиле Singleton в конструкторе, которое означает, что мне нужно пересобрать решение, когда я хочу внести изменения в экземпляр в 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; }
        }
    }

1 Ответ

4 голосов
/ 20 мая 2011

Вы можете использовать метод DesignerProperties.GetIsInDesignMode , например:

if (!DesignerProperties.GetIsInDesignMode(this) && _instance != null)
    throw new NotSupportedException(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...