В WPF есть свойство DesignMode?
В Winforms вы можете сказать
if ( DesignMode ) { // Do something that only happens on Design mode }
есть что-то подобное в WPF?
- Есть ли выбранная вкладка Измененное событие в стандартном WPF Tab Control
- Как показать прогресс во время цикла занятости?
- Открыть окно WPF в WindowsForm APP
- Элементы управления диаграммой WPF
- Изменение вида для ViewModel
- Как вы привязываете CollectionContainer к коллекции в модели представления?
- Обратный вызов, когда свойство зависимостей получает изменение xaml
- Принуждение WPF TextBox больше не работает в .NET 4.0
- WPF: Как связать команду с ListBoxItem с помощью MVVM?
- Преобразование управления WPF (XAML) в документ XPS
- Можно ли использовать другой шаблон для выбранного элемента в WPF ComboBox, чем для элементов в раскрывающемся списке?
- Лучший способ использовать векторное изображение в WPF?
- Установите надстрочный индекс и индекс в форматированном тексте в wpf
Действительно, есть :
System.ComponentModel.DesignerProperties.GetIsInDesignMode
Пример:
using System.ComponentModel; using System.Windows; using System.Windows.Controls; public class MyUserControl : UserControl { public MyUserControl() { if (DesignerProperties.GetIsInDesignMode(this)) { // Design-mode specific functionality } } }
В некоторых случаях мне нужно знать, инициируется ли вызов моего classа, отличного от UI, дизайнером (например, если я создаю class DataContext из XAML). Тогда подход из этой статьи MSDN полезен:
// Check for design mode. if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)) { //in Design mode }
Для любых элементов управления WPF, размещенных в WinForms , DesignerProperties.GetIsInDesignMode(this)
не работает.
Итак, я создал ошибку в Microsoft Connect и добавил обходной путь:
public static bool IsInDesignMode() { if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Contains( "VisualStudio" ) ) { return true; } return false; }
Поздний ответ, я знаю, но для тех, кто хочет использовать это в DataTrigger
или где-нибудь в XAML вообще:
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=PresentationFramework"
Используйте это:
if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { //design only code here }
(Операции Async и File не работают здесь)
Кроме того, чтобы создать экземпляр объекта времени разработки в XAML (d – специальное пространство имен дизайнеров)
...