Свойство WPF UserControl DesignMode (размещено в WinForm) - PullRequest
1 голос
/ 05 ноября 2010

Я ищу DesignMode логическое значение в пользовательском WPF UserControl ... Как правильно заставить его выполнить?

У меня есть элемент управления WPF , размещенный в WinForm .Я видел, что класс «DesignerProperties» не работает в таком случае.

У меня есть некоторая логика в конструкторе, которая генерирует исключения в режиме конструктора, и хочу пропустить этот код, потому что я не дохожу досм. форму с моим UserControl в конструкторе.

Я пытался

private static bool? _isInDesignMode;

/// <summary>
/// Gets a value indicating whether the control is in design mode 
/// (running in Blend or Visual Studio).
/// </summary>
public static bool IsInDesignModeStatic
{
    get
    {
        if (!_isInDesignMode.HasValue)
        {
#if SILVERLIGHT
    _isInDesignMode = DesignerProperties.IsInDesignTool;
#else
            var prop = DesignerProperties.IsInDesignModeProperty;
            _isInDesignMode
                = (bool)DependencyPropertyDescriptor
                .FromProperty(prop, typeof(FrameworkElement))
                .Metadata.DefaultValue;
#endif
        }

        return _isInDesignMode.Value;
    }
}

, но это не работает: ((Я вижу исключения дизайнера в "заблокирован" с помощью строк кода IsInDesignModeStatic ...

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Я использовал это, чтобы обнаружить DesignMode (мой элемент управления WPF определен в библиотеке классов).

    ' Exit here if in Design Mode
    If Assembly.GetEntryAssembly() Is Nothing Then Exit Sub

Вы можете проверить Assembly.GetEntryAssembly.FullName.ToString, если это не ничто, и определитьоткуда элемент управления инициализируется.

DesignerProperties.IsInDesignModeProperty возвращал мне значение null, когда элемент управления размещался в WinForms, потому что WPF не знает, что там находится дизайнер. * Steve

1 голос
/ 06 ноября 2010

Попробуйте это

    if (DesignerProperties.GetIsInDesignMode(this/*this user control*/))
    {
        // Design-mode specific functionality
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...