Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

{

  // Добавить имя типа к переменной-члену _dataToShow.

  _dataToShow +=new string(' ', depth) + obj.GetType().Name + "n";

  // Выполнить рекурсивный вызов для каждого визуального дочернего элемента.

  for (int i=0; i < VisualTreeHelper.GetChildrenCount(obj); i++)

   {

    BuildVisualTree(depth + 1, VisualTreeHelper.GetChild(obj, i));

  }

}

На рис. 27.11 видно, что визуальное дерево открывает доступ к нескольким низкоуровневым агентам визуализации, таким как ContentPresenter, AdornerDecorator, TextBoxLineDrawingVisual и т.д.

Программное инспектирование стандартного шаблона элемента управления

Вспомните, что визуальное дерево применяется инфраструктурой WPF для выяснения, каким образом визуализировать элемент Window и все содержащиеся в нем элементы. Каждый элемент управления WPF хранит собственный набор команд визуализации внутри своего стандартного шаблона. С точки зрения программирования любой шаблон может быть представлен как экземпляр класса ControlTemplate. Кроме того, стандартный шаблон элемента управления можно получить через свойство Template:

// Получить стандартный шаблон элемента Button.

Button myBtn=new Button();

ControlTemplate template=myBtn.Template;

Подобным же образом можно создать в коде новый объект ControlTemplate и подключить его к свойству Template элемента управления:

// Подключить новый шаблон для использования в кнопке.

Button myBtn=new Button();

ControlTemplate customTemplate=new ControlTemplate();

// Предположим, что этот метод добавляет весь код для звездообразного шаблона.

MakeStarTemplate(customTemplate);

myBtn.Template=customTemplate;

Наряду с тем, что новый шаблон можно строить в коде, намного чаще это делается в разметке XAML. Тем не менее, прежде чем приступить к построению собственных шаблонов, завершите текущий пример и добавьте возможность просмотра стандартного шаблона для элемента управления WPF во время выполнения, что может оказаться полезным способом ознакомления с общей структурой шаблона  Добавьте в разметку окна новую панель StackPanel с элементами управления; она стыкована с левой стороной главной панели DockPanel (находится прямо перед элементом <TextBox>) и определена следующим образом:

<Border DockPanel.Dock="Left" Margin="10" BorderBrush="DarkGreen"

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

    BorderThickness="4" Width="358">

  <StackPanel>

    <Label Content="Enter Full Name of WPF Control" Width="340"

        FontWeight="DemiBold" />

    <TextBox x:Name="txtFullName" Width="340" BorderBrush="Green"

        Background="BlanchedAlmond" Height="22"

        Text="System.Windows.Controls.Button" />

    <Button x:Name="btnTemplate" Content="See Template" BorderBrush="Green"

        Height="40" Width="100" Margin="5" Click="btnTemplate_Click"

        HorizontalAlignment="Left" />

    <Border BorderBrush="DarkGreen" BorderThickness="2" Height="260"

        Width="301" Margin="10" Background="LightGreen" >

        <StackPanel x:Name="stackTemplatePanel" />

    </Border>

  </StackPanel>

</Border>

Добавьте пустой обработчик события btnTemplate_Click():

private void btnTemplate_Click(

  object sender, RoutedEventArgs e)

{

}

Текстовая область слева вверху позволяет вводить полностью заданное имя элемента управления WPF, расположенного в сборке PresentationFramework.dll. После того как библиотека загружена, экземпляр элемента управления динамически создается и отображается в большом квадрате слева внизу. Наконец, в текстовой области справа будет отображаться стандартный шаблон элемента управления. Добавьте в класс C# новую переменную-член типа Control:

private Control _ctrlToExamine=null;

Ниже показан остальной код, который требует импортирования пространств имен System.Reflection.System.Xml и System.Windows.Markup:

private void btnTemplate_Click(

  object sender, RoutedEventArgs e)

{

  _dataToShow="";

  ShowTemplate();

  txtDisplayArea.Text=_dataToShow;

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*