2011-10-01 33 views
1

我有一個精確的問題在Silverlight滑塊控件:精度問題與Silverlight的滑塊和它的拇指

我已經建立了一些custeom模板稍微修改標準的Silverlight滑塊控件的視覺appreance。我的目標是有一個滑塊,它表示它的尺度上的繪製刻度值。相應的大拇指在形式上也略有修改,它有一個'tip'(或'peak')在它的中心指向滑塊的當前值。

- >這裏是一個快照,它:http://www.willzeit.at/sliderThumb.jpg

其實一切正常,但我已經遇到了拇指的一個非常奇怪的現象:

上,在指向當前值的拇指位置滑塊似乎從拇指最左側的位置變爲拇指最右側的位置!

因此,在拇指位於其相對於滑塊的最左側位置的情況下,指向滑塊值的拇指上的點是拇指上的最左側位置。

當然,如果拇指位於拇指的數值指示位置位於最右邊位置的最右側位置,則同樣適用。

當然,這是有道理的,因爲拇指將不能超越其滑塊的邊界,因此拇指上的「數值指示」點必須覆蓋拇指的整個寬度(以防萬一像我這種情況下的水平滑塊)。

但是:這就是精度在「同步化」拇指和滑塊(當然,只有當你想表明用拇指滑塊的精確值

正如我所說的,我需要之間的顯著損失。構建一個滑塊,用於顯示數值(用刻度和標籤顯示)和帶針的拇指。當用戶想要使用滑塊控件設置特定值時,必須按照「針」的方式移動拇指在這個特定的價值下休息

我希望我可以使這個問題清楚,也是我的問題:) 有沒有人有任何想法? 我想必須有一種方法來解決這個問題 - 否則滑塊控件不打算以這種方式使用 - 對我來說聽起來不太可能...

我真的很感激任何幫助:) marc

回答

1

理論上所有你需要的是使Silder控制器認爲它的拇指只有1個像素寬。您可以通過修改Thumb模板來完成此操作,以便模板中的頂層元素爲Canvas(網格剪輯其內容),然後在Grid中包含剩餘內容,您將其指定給特定的大小,然後將其左邊的偏移量邊緣。使用一個奇數的寬度,並設置其左側位置= -1 * (Width -1)/2。你可以用margin,畫布左邊或者渲染變換來做到這一點。

現在我說「理論上」,因爲在實踐中,我遇到了一個我無法解釋的異化現象。無論我如何努力,只有拇指的左手邊處於活動狀態。 Silverlight似乎不想識別拇指的右手邊。

最終我決定把這個答案拿出來,因爲顯然你已經在編輯控件的模板了,也許如果你將它應用到你自己的工作中,你將不會得到這個失敗。