Элементы управления только для времени разработки, или где найти определение пространства имен 'd'? - PullRequest
0 голосов
/ 30 августа 2018

Мне нужно отобразить определенный элемент управления WPF только в конструкторе [VS 2017], но не во время выполнения. (В частности, фоновое изображение для размещения компонентов).

Как я узнал , противоположный эффект (скрытие элемента управления во время разработки) может быть достигнут с помощью недокументированного атрибута d:IsHidden="true" из пространств имен, которые обычно включаются даже по умолчанию:

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
mc:Ignorable="d"

Существует еще одна функция для стиля разработки с d:DesignStyle.

Но я не смог найти ничего подобного d:Visible или чего-то подобного.

Итак, существуют ли простые методы, имеющие компонент только для разработки, подобный специальному атрибуту 'd'? Я бы предпочел не использовать пользовательский код позади, потому что есть по крайней мере тривиальное (но раздражающее) решение: просто закомментируйте компонент перед компиляцией!

В идеале весь компонент должен быть отключен / удален во время выполнения, чтобы он не занимал никаких ресурсов.

В более общем смысле, есть ли способ найти все эти «недокументированные» функции пространства имен d?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы можете просто поместить это в свой конструктор Window или UserControl после вызова InitializeComponent ():

if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) 
{
    myDesignControl.Visibility = Visibility.Collapsed;
}

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

0 голосов
/ 30 августа 2018

'd' не магический и не официальный. Это псевдоним для пространства имен xml, локального по отношению к файлу xaml / XML, в котором он определен.

Эта строка определяет d в коде в вопросе:

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

Таким образом, чтобы найти информацию об «функциях» этого пространства имен, должен быть список всех классов, которые находятся в этом пространстве имен. Большинство из них находятся в Microsoft Expression Blend SDK: https://www.microsoft.com/en-us/download/details.aspx?id=22829

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