Расширение элемента управления WPF в раскрывающийся список - PullRequest
0 голосов
/ 06 февраля 2019

Я какое-то время разрабатывал WPF и «ванильные» элементы управления, но я столкнулся со сценарием, в котором ничто не попало в цель.

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

analog clock face

предоставлено https://www.roy -t.nl / 2016/03/05/customizable-touch-friendly-timepicker-clock-for-wpf.html.Это уже существует как элемент управления WPF, я могу написать тестовое приложение и использовать его.Пользователь тянет руки (я использую мышь на ноутбуке без сенсорного экрана) и устанавливает время.У меня нет требования устанавливать секунды, так что ... идеально.

Почти.Единственное, что этот элемент управления плоский, 150x150 пикселей или что-то еще, недвижимость, которую он занимает прямо сейчас, исправлена.Я думаю, как элемент управления DatePicker Microsoft.Элемент управления, который при заключении договора будет показывать только цифровое время (только для чтения), но при расширении будет отображать этот элемент управления и позволит установить время.Так же, как DatePicker отображает календарь.

Проблема в том, что я не уверен, как лучше это сделать.Я не уверен, какую задачу я бы взял на себя.Кто-нибудь может дать мне несколько советов?И дать мне представление о размере задачи?Возможно, вы видели пример чего-то похожего, просто чтобы я мог понять объем и сложность кода?Когда я закончу, этот элемент управления появится в диалоговом окне, которое будет находиться внутри приложения, в котором захват времени - это небольшая часть функциональности.Кроме того, в приложении iirc есть только одно место, где мне нужно фиксировать время.Поэтому, хотя я хотел бы, чтобы мой элемент управления выглядел настолько хорошо, насколько я могу, я не хочу слишком увязать в разработке «просто» элемента управления.

contracted DatePicker control(по контракту)

enter image description here (расширенный)

1 Ответ

0 голосов
/ 06 февраля 2019

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

Это не большая работа, если вы согласны с тем, что она не подлежит повторному шаблонированию.Шаблонирование означает пользовательский контроль, который сложнее.Фиксированный вид может работать в пользовательском контроле.

Выпадающие списки обычно означают всплывающее окно.Или, по крайней мере, контейнер, в который помещаются ваши вещи. https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/popup-overview Это отдельное окно для содержащего, поэтому, если вы скажете, что перетяните окно браузера поверх него, то при открытии вы обнаружите что-то странное.Всплывающее окно появится в верхней части браузера.Хотя всплывающие окна довольно просты в использовании.Вы можете установить datacontext аналогично тому, что вы могли видеть для подобных контекстных меню.

 x:Name="myPopup" 
 DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Mode=Self}}"

Альтернативой является рекламодатель.Они идут в специальном слое, который находится поверх всего остального в окне.Но они находятся в окне - так что если у вас есть один показ и перетащите это окно браузера поверх него, браузер будет сверху.

Важность этого зависит от того, насколько эфемерным будет это всплывающее окно / рекламное окно.Обычно это не считается проблемой для, скажем, комбо-боксов.С украшениями сложно работать, если вы никогда не делали их раньше.Есть люди, которые уже перешли этот мост и создали многократно используемые подходы:

http://www.nbdtech.com/Blog/archive/2010/07/12/wpf-adorners-part-4-ndash-simple-and-powerful-system-for.aspx

...