用滑块的价值绑定标签的位置

时间:2013-01-27 11:39:48

标签: c# wpf binding slider

我在画布中有一个滑块控件,如下所示: enter image description here

我将标签(放置在边框中)添加到画布。如何绑定此边框的位置,以便当滑块值沿其路径移动时,边框会正确移动并显示其值标签

有人可以帮忙吗?任何工作的想法将不胜感激。

2 个答案:

答案 0 :(得分:2)

您必须管理包含标签的边框的左边距,并将其绑定到滑块的值。要将滑块值转换为适当的边距,您需要创建自定义转换器。请记住,没有“LeftMargin”属性,您必须从滑块的值创建一个新的边距并将其传递给边框:

在你的情况下,我建议你创建一个转换器并传递一些参数:顶部边界边缘(固定使其沿直线移动,也可以绑定到滑块的位置),最小和最大滑块值和滑块宽度为缩放到边距坐标。这不是微不足道的......

另一种方法是创建一个从滑块继承而且包含标签的新组件,但是你不会以这种方式避开转换器。

答案 1 :(得分:1)

我是用C#编码做的。然而,它可能是更好的解决方案,但它适用于我。 在滑块的ValueChanged事件中,我编写了这些代码。

private void year_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    if (this.yearInfo == null)
    {
        return;
    }

    Point position = Mouse.GetPosition(this.mapView); //mapView is the name of my canvas
    this.yearInfo.Margin = 
         new Thickness(0, 0, position.X - this.yearInfo.ActualWidth / 2.0, 45);
}