Проблема точности с ползунком Silverlight и его большим пальцем - PullRequest
1 голос
/ 01 октября 2011

У меня проблема точности с ползунком в Silverlight:

Я создал шаблон custeom, чтобы немного изменить внешний вид стандартного элемента управления ползунка Silverlight. Моя цель состоит в том, чтобы иметь ползунок, который представляет его значения в виде нарисованных галочек на его шкале. Соответствующий большой палец также немного видоизменен в форме, так как у него есть «наконечник» (или «пик») в самом центре, чтобы указывать на текущее значение на ползунке.

-> Вот снимок: http://www.willzeit.at/sliderThumb.jpg

На самом деле все работает, но я столкнулся с очень странным поведением большого пальца:

Положение на большом пальце, которое указывает на текущее значение на ползунке, похоже, меняется с крайнего левого положения на большом пальце на крайнее правое положение на большом пальце!

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

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

Конечно, это имеет смысл, потому что большой палец не сможет выйти за границы своего ползунка, и поэтому точка «значения-значения» на большом пальце должна располагаться по всей ширине большого пальца (в случае горизонтальный слайдер, как в моем случае).

НО: это значительная потеря точности в «синхронизации» между большим пальцем и ползунком (конечно, только если вы хотите указать точное значение ползунка большим пальцем.

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

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

Я бы очень признателен за любую помощь :) Марк

1 Ответ

1 голос
/ 02 октября 2011

Теоретически все, что вам нужно, это заставить элемент управления Silder думать, что его большой палец имеет ширину всего 1 пиксель. Вы можете сделать это, изменив шаблон Thumb так, чтобы верхний элемент в шаблоне был Canvas (сетка обрезает его содержимое), а затем содержал остальную часть содержимого в Grid, для которого вы задаете определенный размер и затем сместить его левый край. Используйте нечетное число для ширины и установите его левую позицию = -1 * (Width -1) / 2. Вы можете сделать это с полем, холстом слева или преобразованием рендера.

Теперь я говорю «теоретически», потому что на практике я сталкиваюсь с аномалией, которую просто не могу объяснить. Как бы я ни старался, активна только левая сторона большого пальца. Просто Silverlight, похоже, не хочет распознавать правую сторону большого пальца.

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

...