【问题标题】:Precision issue with the Silverlight Slider and it's thumbSilverlight 滑块及其拇指的精度问题
【发布时间】:2011-10-01 09:57:03
【问题描述】:

我在 Silverlight 中的滑块控件存在精度问题:

我构建了一些自定义模板来稍微修改标准 Silverlight 滑块控件的视觉外观。我的目标是有一个滑块,将其值表示为在其刻度上绘制的刻度。相应的拇指在表格中也略有修改,它的中心有一个“尖端”(或“峰值”),指向滑块的当前值。

--> 截图如下:http://www.willzeit.at/sliderThumb.jpg

其实一切正常,但我遇到了一个非常奇怪的拇指行为:

拇指上指向滑块当前值的位置似乎从拇指上最左边的位置变为拇指上最右边的位置!

因此,如果拇指位于滑块相对于滑块的最左侧位置,则拇指上指向滑块值的点就是拇指上最左边的位置。

当然,如果拇指位于其最右侧位置,而拇指上的值指示位置位于其最右侧位置,则同样适用。

当然这是有道理的,因为拇指将无法超出其滑块的边界,因此拇指上的“值指示”点必须在拇指的整个宽度范围内(如果在我的例子中是一个水平滑块)。

但是:这在拇指和滑块之间的“同步”中会显着降低精度(当然只有当您想用拇指指示滑块的确切值时。

正如我所说,我需要构建一个显示值的滑块(用刻度和标签显示)和一个带针的拇指。当用户想要使用滑块控件设置特定值时,他必须移动拇指,使其“针”停留在该特定值下方。

我希望我能把这个问题和我的问题说清楚:) 有人有什么想法吗? 我想一定有办法解决这个问题 - 否则滑块控件不打算以这种方式使用 - 这对我来说听起来不太可能......

我真的很感激任何帮助 :) 马克

【问题讨论】:

    标签: templates silverlight slider precision


    【解决方案1】:

    理论上你只需要让Silder 控件认为它的拇指只有1 个像素宽。您可以通过修改 Thumb 模板来做到这一点,使模板中的顶部元素是 Canvas(网格剪辑其内容),然后将其余内容包含在您指定特定大小的 Grid 中,并且然后偏移它的左边缘。使用奇数作为宽度并将其左侧位置设置为 = -1 * (Width -1) / 2。您可以使用边距、左侧画布或渲染变换来执行此操作。

    现在我说“理论上”,因为在实践中我遇到了一个我无法解释的异常情况。无论我多么努力,只有拇指的左侧是活动的。 Silverlight 似乎只是不想识别拇指的右手边。

    最终我决定提出这个答案,因为显然您已经在编辑控制模板,也许如果您将其应用到自己的工作中,您将不会遇到这种异常情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-22
      • 2018-08-12
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多