Создание повторно используемого элемента интерфейса в WPF - PullRequest
2 голосов
/ 18 мая 2011

Я разрабатываю приложение WPF на C # и думал о реализации пользовательского элемента пользовательского интерфейса в различных окнах.

Я хотел бы иметь свернутый лоток (видимый только около 4 пикселей), который расширяется после нажатия на значок рядом с лотком. Расширенная версия будет отображать все элементы управления и будет минимизирована, когда я снова нажму на значок. Я разработал концепцию HTML , чтобы прояснить ситуацию.

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

Хотя у меня есть опыт работы с C #, я довольно новичок в разработке / шаблонах интерфейса WPF, но я уверен, что должен быть способ, чтобы я мог использовать этот элемент пользовательского интерфейса в моем приложении без необходимости копировать / вставлять много строк кода в моем файле классов форм.

Я надеюсь, что кто-то может мне помочь или, по крайней мере, направить меня в правильном направлении.

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

Существует три способа настройки ваших элементов.

1 Если вам нужны только визуальные изменения, вы можете использовать styles , чтобы изменить внешний вид элементов управления .net по умолчанию. Вы даже можете переопределить / расширить шаблоны по умолчанию.

2 Если вы хотите использовать собственную логику в элементе управления, вы можете создать пользовательский элемент управления . Фреймворк приносит много «примитивов», на которые можно опираться. Примеры: ContentControl или HeaderedContentControl. Допустим, вы хотите создать пользовательский элемент управления Expander, вы можете унаследовать свой пользовательский элемент управления от HeaderedContentControl, который предоставляет вам свойства Header и Content, и вам просто нужно самостоятельно реализовать логику переключения. CustomControls - хороший выбор, если вы хотите создать базовую функциональность, которую можно использовать в вашем приложении. Они также могут быть тематическими / стилизованными в зависимости от варианта использования (см. 1).

3 Если вы хотите объединить различные элементы управления в один элемент управления, вы можете создать UserControl . Пользовательские элементы управления составлены с использованием XAML. Большинство элементов управления верхнего уровня являются пользовательскими элементами управления, управляемыми моделью представления.

Ваш кейс может быть построен с использованием Popup и ToggleButton или Expander.

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

Если вы используете всплывающее окно, просто привяжите свойство IsPopupOpen к IsChecked ToggleButton и установите PopupStaysOpen = false, чтобы привязать кнопку к вашему всплывающему окну.

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

2 голосов
/ 18 мая 2011

Как насчет использования Expander Control?

0 голосов
/ 18 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...