Sto sviluppando un'applicazione touch WPF. Ho un visualizzatore di scorrimento contenente pulsanti. Voglio scorrere il display quando tocchi-trascinare i pulsanti e chiamare il comando del pulsante quando tocco. Ecco il codice per iniziare:ScrollViewer WPF: tocca = fai clic, tocca e tieni premuto/trascina = scorri. Come ottenere questo?
<Window x:Class="wpf_Button_Scroll.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:wpf_Button_Scroll"
Title="MainWindow" Height="350" Width="200">
<Window.DataContext>
<my:MyViewModel />
</Window.DataContext>
<Grid>
<ScrollViewer>
<ListView ItemsSource="{Binding MyData}" HorizontalAlignment="Stretch">
<ListView.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}"
Command="{Binding DataContext.MyCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
CommandParameter="{Binding}"
Margin="5 2" Width="150" Height="50"
FontSize="30" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollViewer>
</Grid>
</Window>
E il modello di vista:
namespace wpf_Button_Scroll
{
class MyViewModel
{
public MyViewModel()
{
MyCommand = new ICommandImplementation();
}
public string[] MyData
{
get
{
return new string[]{
"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"
};
}
}
public ICommand MyCommand { get; private set; }
private class ICommandImplementation : ICommand
{
public bool CanExecute(object parameter) { return true; }
public event EventHandler CanExecuteChanged;
public void Execute(object parameter) { System.Windows.MessageBox.Show("Button clicked! " + (parameter ?? "").ToString()); }
}
}
}
comportamento previsto:
quando l'utente tocca un pulsante, viene visualizzata una finestra di messaggio con il testo "Pulsante cliccato!" ==> OK
quando l'utente preme un pulsante e si sposta il dito (senza rilasciare), i pulsanti di scorrere verso l'alto e verso il basso ==> NOK
Come posso ottenere lo scorrimento in uno ScrollViewer che contiene pulsanti?
Sto sviluppando su Visual Studio 2013 su Windows 7 e sto prendendo di mira un desktop Windows 7 e un tablet Windows 8 con la stessa base di codice. Framework 4.0. Se è veramente necessario, posso effettuare l'aggiornamento a 4.5.2 (abbiamo molti utenti, quindi non è banale da aggiornare).
Il problema è stato risolto? (In realtà mi aspettavo che funzionasse automaticamente) –
@ H.B. sì, il mio problema è risolto.Vedi la risposta accettata (che ho appena modificato perché non era molto chiara). – DonkeyMaster
Possibile duplicato di [WPF Scrollviewer su tablet touch screen] (http://stackoverflow.com/questions/17294135/wpf-scrollviewer-on-touch-screen-tablet) – DonkeyMaster