2012-07-30 62 views
0

我正在基于几个滑块制作Metro Xaml控件。本质上,在ManipulationDelta事件 - 特别是沿着X轴的翻译 - 滑块大拇指之一,我想翻译另一个滑块大拇指相同的数量。我碰到的问题是使用RenderTransform来翻译另一个拇指不会改变其滑块的值,而是表面上改变拇指位置。使用RenderTransform更改Xaml Slider值

有没有更容易的解决方案来获取滑块的值与拇指位置相匹配,而不仅仅是使用几次计算将拇指位置投影到滑块值中?

编辑: 这是什么,我试图做一个更仔细和彻底的解释:

从本质上讲,我试图让代表一个预览窗口中的UI控件 - 可伸缩,可翻译(沿X轴)栏,可让您选择想要预览的相应视频的某些部分。

在幕后,我使用两个滑块来表示预览窗口的左右两个拇指,以及一个连接两个滑块大拇指的矩形,它们允许您将矩形和两个拇指串联起来。两个滑块的拇指可让您拉伸窗户。

拉伸是通过增加矩形的宽度来完成的。通过矩形的翻译通过使用TranslateTransform对象完成。

回答

1

常规的Slider控件不需要处理任何操作或应用渲染转换。您可以将一个滑块的值绑定到另一个滑块的值,并且它们将前后移动。

<StackPanel 
    VerticalAlignment="Center" 
    HorizontalAlignment="Center"> 
    <Slider 
     Width="300" 
     Minimum="0" 
     Maximum="10" 
     StepFrequency="0.1" 
     Value="{Binding Value, ElementName=slider2, Mode=TwoWay}" /> 
    <Slider 
     x:Name="slider2" 
     Width="300" 
     Minimum="0" 
     Maximum="10" 
     StepFrequency="0.1" /> 
</StackPanel> 
+0

唯一的问题是绑定的Slider已经涉及另一个数据绑定。在您的示例中,第一个滑块将绑定到MediaElement。否则,除了使用Rectangle对象之外,我将如何实现相同的效果? – Zach 2012-07-30 03:17:04

+1

如果有隐藏的先决条件 - 你应该分享更多关于这些的细节。您可以使用事件而不是绑定,或者您可以在别处设置绑定,以便整个设置成为可能。我只是相信使用滑块操作或转换必须是错误的。 – 2012-07-30 05:12:41

+0

@Zach,[MSDN上的这个问题](http://alturl.com/eo6ns)表明WinRT目前不支持MultiBinding。尽管如此,您可以使用[* BindingListener类在棱镜框架WP7 *上可用](http://alturl.com/6vu7o)。你可以通过MSDN问题的OP(https://skydrive.live.com/?cid=a179313882495dc1&resid=A179313882495DC1!232&id=A179313882495DC1!232)查看[示例项目](他用[一些帮助](http: //alturl.com/vpxwo))。希望它能解决你的问题。 8 – 2012-07-30 05:38:22