Условная компиляция препроцессора в XAML - PullRequest
9 голосов
/ 28 ноября 2010

У меня есть некоторый код, написанный на C # WPF, и у меня есть некоторый код для отладки, который я в настоящее время компилирую или выключаю для режима отладки или выпуска. Как включить или отключить элементы управления пользовательским интерфейсом, которые в настоящее время записаны в моем XAML на основе определений препроцессора C #?

Ответы [ 3 ]

13 голосов
/ 28 ноября 2010

Вы можете добавить некоторый код в конструктор, который включает / отключает элементы:

public MainWindow()
{
    InitializeComponent();

#if DEBUG
    button1.IsEnabled = false;
#endif
}
3 голосов
/ 28 ноября 2010

Для XAML отсутствуют директивы в стиле препроцессора.Однако вы можете включать и исключать файлы XAML на основе конфигурации сборки, предоставляя вам некоторый контроль.Это может предоставить вам возможность включения вариаций файла в зависимости от выбранной конфигурации сборки.Конечно, недостатком является то, что вам придется поддерживать несколько версий файла.Это может быть смягчено путем использования шаблонов T4 , чтобы различные файлы автоматически создавались в соответствии с выбранной конфигурацией.

0 голосов
/ 28 ноября 2010

Есть два способа сделать это. Одним из них является использование директив препроцессора, которые могут маскировать полные разделы кода, выполняющего его только в конкретной сборке. Или вы можете использовать условный атрибут, чтобы легко заблокировать полный метод. http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=420
Вот описание разницы между ними: http://www.thinkfarahead.com/2007/09/if-debug-vs-conditional.html. Вы можете ссылаться на элементы управления в своем коде, предоставив атрибут x: Name в xaml и поместив код для отключения элементов управления в условной части вашего кода.

Обновлено: для большей ясности упомянутое x: Имя атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...