public class ItemTapCommand
{
public static readonly DependencyProperty CommandProperty =
DependencyProperty.RegisterAttached("Command",
typeof(ICommand), typeof(ItemTapCommand),
new PropertyMetadata(null,
CommandPropertyChanged));
public static void SetCommand(DependencyObject attached, ICommand
value)
{
attached.SetValue(CommandProperty,
value);
}
public static
ICommand GetCommand(DependencyObject attached)
{
return (ICommand)attached.GetValue(CommandProperty);
}
private static void CommandPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
// Attach tap handler
(d as FrameworkElement).Tapped += ItemTapCommand_Tapped;
}
private static void ItemTapCommand_Tapped(object
sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
// Get command
ICommand
command = GetCommand(sender as
DependencyObject);
// Execute command
command.Execute(null);
}
}
This example shows it attached to a GridView item (grid) and using a command from the view model via the context of the GridView:
<GridView ItemsSource="{Binding Items}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}" SelectionMode="Single">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Width="133" Height="200"
cmd:ItemTapCommand.Command="{Binding ElementName=posterGrid, Path=DataContext.EditCommand}">
No comments:
Post a Comment