WPF 4.0:événements tactiles multi-touch manger ScrollViewer
Je défiler spectateur avec beaucoup Sliders à l'intérieur de celui-ci. Je veux que la visionneuse défile avec le toucher, et je veux que le curseur interne réagisse aussi au toucher.
Malheureusement, la visionneuse de défilement mange les événements "TouchMove" et ne les transmet pas au contrôle du curseur. Une idée de comment résoudre ce problème?
Voici mon 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>
Et mon code-behind:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = Items;
}
public IEnumerable<int> Items
{
get
{
return Enumerable.Range(0, 50);
}
}
}
Bonne suggestion, Laurent. J'ai essayé, mais je n'ai toujours pas l'événement TouchMove. J'ai essayé de surcharger le OnTouchMove aussi ... mais il ne met jamais "Handled" à true dans la base ... blerg. –
Je suis nouveau dans le domaine des gestes tactiles; Devriez-vous enregistrer un gestionnaire d'événements une fois que vous avez un événement TouchDown? Ou est-ce que le système dépend de certains matériels pour déclencher TouchMove, ce que vous n'avez peut-être pas? Juste devine. –
Lorsque le curseur ne se trouve pas dans une visionneuse de défilement, tout fonctionne correctement car les événements tactiles sont traduits en événements de souris. Je peux même obtenir l'événement TouchMove sans la visionneuse de défilement. MAIS, une fois que le visualiseur de défilement prend le relais, il ne laisse pas l'événement TouchMove tomber, donc il n'a jamais la chance d'être traduit comme un mouvement de souris. –