Разработка стиля UserControl с промежуточным содержимым - PullRequest
1 голос
/ 28 февраля 2012

Я разработал стиль для UserControl в различных формах, например, в форме звезды, шара, неба и т. Д. Все эти формы созданы с использованием контура.Мне нужно прочитать содержимое usercontrol, используя стиль, настроить ширину и высоту и отобразить содержимое.

<Style TargetType="{x:Type UserControl}">
    <Setter Property="Background" Value="#CCC4C4" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type UserControl}">
              <Path
           Data="F1M37.3,41.5L24.0,34.8 10.7,41.4 13.2,27.3 2.5,17.3 17.4,15.3 24.0,2.5 30.6,15.3 45.5,17.4 34.7,27.3 37.3,41.5z"
           Fill="White"
            Height="{TemplateBinding Height}"
            Width="{TemplateBinding Width}"
           Stroke="#FFC4A000"
           StrokeMiterLimit="4"
           StrokeThickness="1">

      </Path>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 Ответ

0 голосов
/ 28 февраля 2012

Вы можете использовать ContentControl , его Container, который может быть заполнен отдельным контентом.

Вот пример:

  <Grid>
    <Grid.Resources>
      <Style TargetType="{x:Type ContentControl}">
        <Setter Property="Background" Value="#CCC4C4" />
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContentControl}">
              <Path
           Data="F1M37.3,41.5L24.0,34.8 10.7,41.4 13.2,27.3 2.5,17.3 17.4,15.3 24.0,2.5 30.6,15.3 45.5,17.4 34.7,27.3 37.3,41.5z"
           Fill="White"
           Stretch="Fill"
           Stroke="#FFC4A000"
           StrokeMiterLimit="4"
           StrokeThickness="1">

              </Path>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Grid.Resources>

    <StackPanel>
      <!-- the below ones become stars -->
      <ContentControl></ContentControl>
      <ContentControl></ContentControl>
      <ContentControl></ContentControl>
    </StackPanel>

  </Grid>

EDIT:

Если вы хотите, чтобы размер звезды изменялся в соответствии с доступным пространством, используйте Stretch = Fill вместо привязки with и height (изменили это выше).

...