Margin и Padding реализованы ContentControl?

Я разрабатываю пользовательский элемент управления, полученный из System.Windows.Controls.ContentControl. В шаблоне элементов управления по умолчанию (themes\generic.xaml) я использую элемент Border, который оборачивает фактическое содержимое.

Применяет ли мой пользовательский элемент управления поля и отступы (т. Е. Сжимает границу в соответствии с отступом, заданным в пользовательском элементе управления), или я могу / могу сам решить, где применяются поля и отступы (т. Е. Установить свойства поля и отступа для пограничный элемент к {TemplateBinding Margin} и т.п.

Заранее спасибо!

2 ответа

Решение

Маржа реализована, я считаю, полностью в элементе Framework. Однако Паддинг не является. ContentControl имеет "PaddingProperty", но по умолчанию он ничего не делает. По сути, вы привязываете свойство MarginProperty к свойству Padding элемента управления контентом.

Я решил проблему, определив стиль для ContentControl и привязав Padding к Margin ContentPresenter, определенного в шаблоне.

<Style TargetType="{x:Type ContentControl}">
     <Setter Property="Template">
          <Setter.Value>
               <ControlTemplate TargetType="{x:Type ContentControl}">                          
                    <ContentPresenter Margin="{TemplateBinding Padding}"/>                                
               </ControlTemplate>
          </Setter.Value>
     </Setter>
</Style>

Может быть, это помогает другим.

Другие вопросы по тегам