Существует три способа настройки ваших элементов.
1 Если вам нужны только визуальные изменения, вы можете использовать styles , чтобы изменить внешний вид элементов управления .net по умолчанию. Вы даже можете переопределить / расширить шаблоны по умолчанию.
2 Если вы хотите использовать собственную логику в элементе управления, вы можете создать пользовательский элемент управления . Фреймворк приносит много «примитивов», на которые можно опираться. Примеры: ContentControl
или HeaderedContentControl
. Допустим, вы хотите создать пользовательский элемент управления Expander, вы можете унаследовать свой пользовательский элемент управления от HeaderedContentControl
, который предоставляет вам свойства Header и Content, и вам просто нужно самостоятельно реализовать логику переключения.
CustomControls - хороший выбор, если вы хотите создать базовую функциональность, которую можно использовать в вашем приложении. Они также могут быть тематическими / стилизованными в зависимости от варианта использования (см. 1).
3 Если вы хотите объединить различные элементы управления в один элемент управления, вы можете создать UserControl . Пользовательские элементы управления составлены с использованием XAML. Большинство элементов управления верхнего уровня являются пользовательскими элементами управления, управляемыми моделью представления.
Ваш кейс может быть построен с использованием Popup
и ToggleButton
или Expander
.
Решение зависит от желаемого поведения. Если вы хотите, чтобы открывшаяся панель перемещала следующий контент вниз, вам нужен расширитель. Если вы хотите использовать функциональность с раскрывающимся списком, вам нужно всплывающее окно.
Если вы используете всплывающее окно, просто привяжите свойство IsPopupOpen
к IsChecked
ToggleButton и установите PopupStaysOpen = false
, чтобы привязать кнопку к вашему всплывающему окну.
Если вы используете элемент управления расширителем, вы должны создать стиль, который можно применять ко всем равным расширителям в вашем приложении, чтобы минимизировать требуемый XAML в каждом представлении.