Zajmuję się aplikacją dotykową WPF. Mam przeglądarkę zawierającą przyciski. Chcę przewinąć ekran po dotknięciu, przeciągnięciu przycisków i wywołaniu polecenia przycisku po dotknięciu. Oto niektóre kodu, aby zacząć:Przeglądarka stron WPF: dotknij = kliknij, dotknij i przytrzymaj/przeciągnij = przewiń. Jak to osiągnąć?
<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>
A model widok:
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()); }
}
}
}
Przeznaczone zachowanie :
gdy użytkownik kliknie przycisk, pojawi się okno komunikatu z tekstem "Przycisk kliknięty!" ==> OK
gdy użytkownik naciśnie przycisk i przesuwa palcem (bez zwalniania), przyciski przewijania w górę iw dół ==> NOK
Jak mogę osiągnąć przewijania w ScrollViewer że zawiera przyciski?
Zajmuję się programowaniem Visual Studio 2013 na Windows 7 i kierujemy na pulpit Windows 7 i tablet Windows 8 z tym samym kodem. Framework 4.0. Jeśli jest to konieczne, to mogę zaktualizować do wersji 4.5.2 (mamy wielu użytkowników, więc aktualizacja nie jest banalna).
Czy problem został rozwiązany? (Właściwie to oczekiwałem, że to działa domyślnie) –
@ H.B. tak, mój problem został rozwiązany.Zobacz zaakceptowaną odpowiedź (którą właśnie edytowałem, ponieważ nie było to zbyt jasne). – DonkeyMaster
Możliwy duplikat [Przeglądarki WPF na tablecie z ekranem dotykowym] (http://stackoverflow.com/questions/17294135/wpf-scrollviewer-on-touch-screen-tablet) – DonkeyMaster