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

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

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

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


person Christian Klauser    schedule 23.01.2009    source источник


Ответы (2)


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

person Micah    schedule 23.01.2009
comment
Тем временем я проводил некоторые эксперименты. (Добавление красочных границ на каждом уровне иерархии), и я пришел к такому же выводу. Тем не менее спасибо! - person Christian Klauser; 23.01.2009

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

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

person garcipat    schedule 27.02.2018