WPF 4.0:多點觸控的ScrollViewer吃觸摸事件
我已經滾動查看器,它裏面很多滑塊。我希望滾動查看器可以平移觸摸,並且我希望內部滑塊也能夠響應觸摸。
不幸的是,滾動查看器正在吃掉「TouchMove」事件,而不是將它們傳遞給滑塊控件。任何想法如何解決這個問題?
這是我的XAML:
<Window x:Class="ScrollingTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer VerticalScrollBarVisibility="Auto" PanningMode="Both" >
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Height="100" BorderThickness="2" BorderBrush="Black">
<Slider Value="{Binding ., Mode=TwoWay}" Width="300" Minimum="0" Maximum="100" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>
我的代碼隱藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = Items;
}
public IEnumerable<int> Items
{
get
{
return Enumerable.Range(0, 50);
}
}
}
好的建議,洛朗。我嘗試過,但我仍然沒有得到TouchMove事件。我已經嘗試覆蓋OnTouchMove以及...但它從來沒有設置「處理」爲真正的基地... blerg。 – 2010-07-15 19:10:39
我是新的觸摸手勢的東西;一旦您有TouchDown事件,您是否需要註冊一個事件處理程序?或者系統是否依靠某些硬件來觸發您可能沒有的TouchMove? 只是猜測。 – 2010-07-15 21:23:22
當滑塊不在滾動查看器中時,一切正常,因爲觸摸事件轉換爲鼠標事件。我甚至可以在沒有滾動查看器的情況下獲得TouchMove事件。但是,一旦滾動查看器接管,它不會讓TouchMove事件停機,所以它永遠不會有機會作爲鼠標移動來翻譯。 – 2010-07-15 22:07:30