2012-07-30 22 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