Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
course_(Windows&Web).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.68 Mб
Скачать

Использование пользовательского элемента управления

Мы завершили создание пользовательского элемента управления, но от него нет толку пока вы его не расположите в файле MainPage.xaml. В самой верхней части MainPage.xaml добавьте пространство имен для вашего AddressUserControl’a:

xmlns:controls="clr-namespace:ControlsExample"

Теперь вы можете заменить ваш пользовательский элемент управления для всего содержимого Border в MainPage.xaml. Если вы еще не удалили Border, то удалите и замените своим элементом управления, точно также как вы вставили бы любой другой элемент управления в StackPanel,

<controls:AddressUserControl x:Name="HomeAddress" />

Многократное использование

Давайте добавим еще один пользовательский элемент управления к StackPanel и изменим подсказки таким образом, чтобы у нас было следующее

<UserControl x:Class="Example.MainPage"     xmlns="http://schemas.microsoft.com/client/2007"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:controls="clr-namespace:ControlsExample"     Width="600" Height="500">     <StackPanel Background="White">         <TextBlock Text="Event Address" FontFamily="Verdana" FontSize="24"             HorizontalAlignment="Left" Margin="15,0,0,0"/>          <controls:AddressUserControl x:Name="HomeAddress" />        <TextBlock Text="Billing Address" FontFamily="Verdana" FontSize="24"             HorizontalAlignment="Left" Margin="15,0,0,0"/>          <controls:AddressUserControl x:Name="BillingAddress" />              </StackPanel> </UserControl> 

Обратите внимание, что добавление второго экземпляра AddressUserControl требует только наличия двух различных названий. Более того мы смогли вынести весь код из главной страницы приложения (логика которого не относилась к MainPage.xaml.cs)

using System.Windows.Controls;

namespace Example {     public class MainPage : UserControl     {         public MainPage()         {             InitializeComponent();         }     } }

Вся логика была экспортирована и инкапсулирована в пользовательском элементе управления. Вы можете добавить 2 (или 20) пользовательских элемента управления AddressUserControl в ваш интерфейс, не написав и строки кода. При этом, запустив программу, каждый элемент будет работать независимо и каждый поддерживает комбинацию Ctrl + M

CostomControl

Цель пользовательских элементов управления заключается в предоставлении поверхности визуального проектирования, дополненной шаблоном, что облегчает задачу определения элемента управления в обмен на будущую гибкость. В ситуации, когда функциональность пользовательского элемента управления вполне удовлетворяет, но нужно подстроить его визуальное представление, возникает проблема. Например, предположим, что необходимо использовать ту же самую адресную форму, но предоставить ей другую обложку, которая больше соответствует существующему окну приложения.

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

Решение этой проблемы состоит в создании элемента управления без внешнего вида, т.е. элемента управления на основе одного из базовых классов, не имеющих поверхности визуального проектирования. Такой элемент управления помещает свой код разметки в шаблон по умолчанию, который можно заменить, не затрагивая логики элемента управления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]