Как создать свой элемент в visual stidio?

При работе с проектами типа wpf, дается большая свобода для создания интерфейса. Довольно часто, а скорее даже всегда, интерфейс состоит из однотипных элементов типа: кнопка, текстовое поле, картинка. Но иногда появляется потребность в частом использование более сложных конструкций, который крайне громоздки. К примеру аналог списка cheackbox'ов, или залипающая кнопка слайдер. Есть ли возможность создать элемент, который будет вызываться более компактным кодом?
  • Вопрос задан
  • 3134 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Sumor
Для этого вы можете создать UserControl или CustomControl.
В первом случае вы создаёте UserControl (пользовательский элемент управления) добавляя его к проекту как окно приложения. Настраиваете по сути как часть окна приложения добавляя нужные контролы на него и описывая логику в коде. После компиляции проекта контрол автоматически попадает на панель инструментов.
Например:
<UserControl x:Class="WpfApplication3.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBox />
        <ListBox Grid.Row="1" />
    </Grid>
</UserControl>


Во втором случае вы как бы наследуетесь от базового контрола и добавляете к тему оформление и немного логики. В меню добавления элементов этот тип называется CustomControl или настраиваемый элемент управления.
Либо через C#:
public MyTextBox : TextBox
{

}


Либо через Xaml:
<TextBox x:Class="WpfApplication1.MyTextBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" >
   
</TextBox>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы