locked
Что такое ContentPresenter? RRS feed

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

  • ContentPresenter это способ в WPF осуществить content model( модель данных) для элементов. ContentPresenter, по определению, применяется для представления данных. Эти данные могут быть текстом, изображением, графическими фигурами или даже CLR объектами,XML, или данные взятые(подтянутые) из баз данных. Что бы правильно отображать данные, WPF использует то что называется DataTemplate. ContentPresenter имеет встроенный набор шаблонов данных по умолчанию для представления UIElements, строк, XML данных, документов и тд. Можно переопределить ContentPresenter шаблон по умолчанию процесса согласования\определения (default template negotiation/determination process) указывав ваши собственные настройки DataTemplate или DataTemplateSelector или вы можете использовать шаблоны доступные по умолчанию, например, что бы представить текст вы можете просто написать что то вроде этого:

    <ContentPresenter Content="WPF"/>
    Чтобы представить UIElements, вы можете написать так:

    <ContentPresenter>
      <ContentPresenter.Content>
        <Ellipse Width="120" Height="60" Fill="Red"/>
      </ContentPresenter.Content>
    </ContentPresenter>
    

    Чтобы представить XmlNodes, вы можете сделать так :

    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <Page.Resources>
        <XmlDataProvider x:Key="xmlData" XPath="XmlData">
          <x:XData>
            <XmlData Content="WPF" xmlns=""/>
          </x:XData>
        </XmlDataProvider>
      </Page.Resources>
      <ContentPresenter
         Content="{Binding XPath=@Content, Source={StaticResource xmlData}}"/>
    </Page>
    

    Чтобы представить документы, вы можете сделать так:

    <ContentPresenter>
      <ContentPresenter.Content>
        <FlowDocument>
          <Paragraph>WPF</Paragraph>
        </FlowDocument>
      </ContentPresenter.Content>
    </ContentPresenter>
    

    ContentPresenter знает как представить данные, так как ContentPresenter имеет встроенный набор шаблонов по умолчанию и процесс согласования шаблонов выбирает верный шаблон для представления соответствующих «данных». Вы можете переопределить процесс согласования шаблонов в ContentPresenter , указав его в DataTemplate или DataTemplateSelector свойствах, следующий пример показывает как представить объект типа CLR и отобразить значение его пространства имен свойства:
    <ContentPresenter>
      <ContentPresenter.Content>
        <x:Type TypeName="ContentPresenter"/>
      </ContentPresenter.Content>
      <ContentPresenter.ContentTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Namespace}"/>
        </DataTemplate>
      </ContentPresenter.ContentTemplate>
    </ContentPresenter>
    

    С помщью ContentPresenter, вы можете отобразить любой тип данных в пользовательском интерфейсе и обычно ContentPresenter размещаются внутри ControlTemplate для отображения «данных» элементов дерева созданного с помощью ControlTemplate
    Для связи [Mail]
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 23:03 MSDN Forums consolidation (От:Разработка Windows-приложений)
    17 марта 2010 г. 12:08
    Модератор