Как изменить интервал между полями в DataForm?

Как изменить интервал между полями в DataForm в Silverlight?

Я пробовал редактировать шаблон, но не могу найти то, что мне нужно. Я думал, что все, что мне нужно сделать, это изменить MinHeight и Margin стиля DataField, но, похоже, это не помогло.

<Style TargetType="dataFormToolkit:DataField">
        <Setter Property="IsTabStop" Value="False"/>
        <Setter Property="Margin" Value="2"/>
        <Setter Property="MinHeight" Value="5"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="dataFormToolkit:DataField">
                    <ContentControl x:Name="ContentControl" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="Stretch" IsTabStop="False" VerticalAlignment="Center"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Я нашел ряд статей о стилизации DataForm, но многие из них кажутся устаревшими. Я не вижу в полностью извлеченном шаблоне в Blend ничего, что соответствовало бы интервалу.


person Simon_Weaver    schedule 27.03.2010    source источник
comment
Вы пытались поместить свойство Margin в элемент ContentControl?   -  person Gabe    schedule 27.03.2010
comment
хорошая мысль - был оптимистичен на минуту, но вроде не сработал   -  person Simon_Weaver    schedule 27.03.2010


Ответы (1)


Хорошо, что изменение Margin стиля действительно меняет интервал.

Я собираюсь предположить, что у вас есть вышеуказанный стиль в ресурсе и вы ожидаете, что он будет применяться неявно ко всем экземплярам DataField. Silverlight 3 не поддерживает неявные стили (набор инструментов имеет некоторые присоединенные свойства, которые, тем не менее, могут обеспечить некоторую подобие неявных стилей).

Вам нужно сослаться на этот стиль из DataForm: -

<Grid.Resources>
  <Style x:Key="DataFieldStyle" TargetType="dataFormToolkit:DataField">
    <Setter Property="Margin" Value="2"/>
    <Setter Property="MinHeight" Value="5"/>
  </Style>
</Grid.Resources>
<DataForm DataFieldStyle="{StaticResource DataFieldStyle}" />
person AnthonyWJones    schedule 27.03.2010
comment
Я на самом деле использую Silverlight 4, который неявно применяет стили. Ключевым моментом здесь было применение стиля DataField к самой DataForm. Даже если вы примените его к каждому DataField в форме, он не вступит в силу. Как только я назначил его самой DataForm, все заработало. Спасибо! - person Simon_Weaver; 28.03.2010