Margin и Padding реализованы ContentControl? - PullRequest
6 голосов
/ 23 января 2009

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

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

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

Ответы [ 2 ]

9 голосов
/ 23 января 2009

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

1 голос
/ 27 февраля 2018

Я решил проблему, определив стиль для 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>

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

...