none
ContentControl ContentPresenter RRS feed

  • Общие обсуждения

  • Добрый вечер.

    Есть у меня документация. В документации титульная страница везде одна и та же (шаблон один и тот же). Поэтому решил создать её отдельно в DataTemplate например.

    Шаблон простой: Наверху страницы Наименование компании, по центру Название буклета внизу город и год.

    Отсюда три вопроса:

    1) Правильно ли делаю что шаблон страницы помещаю в DataTempate?

    2) Как правильно его поместить? Через ContentControl или через ContentPresenter. Оба варианта работают. Или это один и тот же вариант просто в случае с ContentControl просто ContentPresenter опускается.

        <Window.Resources>
            <DataTemplate x:Key="PersonTemplate">
                <Border Width="100" Height="100" Background="Aqua">
                    <TextBlock Text="{Binding Path=FirstName}" VerticalAlignment="Center" TextAlignment="Center"/>
                </Border>
            </DataTemplate>
        </Window.Resources>
        <Grid>
            <ContentControl Content="{Binding}" ContentTemplate="{StaticResource PersonTemplate}">
     
            </ContentControl>
        </Grid>
    </Window>
        <Window.Resources>
            <DataTemplate x:Key="PersonTemplate">
                <Border Width="100" Height="100" Background="Aqua">
                    <TextBlock Text="{Binding Path=FirstName}" VerticalAlignment="Center" TextAlignment="Center"/>
                </Border>
            </DataTemplate>
        </Window.Resources>
        <Grid>
            <ContentPresenter Content="{Binding}" ContentTemplate="{StaticResource PersonTemplate}">
     
            </ContentPresenter>
        </Grid>
    </Window>

    3) Где может пригодиться явное указание типа DataTemplate

     <DataTemplate DataType="{x:Type ContentControl}" x:Key="T2">

    или

    Иногда x:Type например string или int

    Спасибо

    28 апреля 2016 г. 15:01

Все ответы

  • На самом деле не понятно, что тут можно подсказать. Решение индивидуальное и при этом работает. Вам остается только этому радоваться )))

    VB.Net - WPF, UWP

    Отвечающий
  • Добрый день.

    Элемент ContentControl является базовым классом для элементов управления, которые содержат другие элементы (например, кнопки).

    Элемент ContentPresenter используется внутри шаблонов элементов управления для отображения Контента.

    Делайте также, если пишите свой контрол, то наследуйте его от ContentControl, если вам надо отобразить контент, например в ControlTemplate, то лучше использовать ContentPresenter. В вашем случае, я бы использовать Presenter.

    Отвечающий