Разница между DesignWidth и Width в UserControl в WPF

Когда я создаю новый UserControl в WPF, студия создает некоторый XAML:

<UserControl x:Class="MOG.Objects.Date.Calender"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">

    <Grid>

    </Grid>
</UserControl>

В UserContol я также могу добавить свойство Ширина. В чем разница между DesignWidth и Width?

Ответы

Ответ 1

Свойства d:DesignHeight и d:DesignWidth="300" используются, потому что (Source):

  • UserControls не встроены в родительский вид. Width и Height не установлены.

  • Конструктор корневого элемента не вызывается. Корневой элемент заменяется дизайнером. ViewModel не создается.

  • Элементы управления ведут себя иначе. Нет событий мыши и клавиатуры. Загруженные временные расширения дизайна

Чтобы улучшить опыт проектирования, Microsoft предоставляет специальные атрибуты времени разработки, которые могут быть добавлены к любому элементу WPF и служат подсказкой для инструмента проектирования.

В режиме проектирования используется все, что используется в префиксе d:, в том числе такие свойства, как:

d:DesignWidth

d:DesignHeight

d:LayoutOverrides

Ответ 2

d:DesignHeight и d.DesignWidth предназначены для конструктора (WYSIWYG), в Visual Studio или в Expression Blend. Height и Width на самом деле предназначены для выполнения.