弹出菜单 windows phone 8.1 暂停列表视图
Flyout Menu windows phone 8.1 on hold Listview
如何在 listview
上按住项目时显示 flyout
菜单?我试过了,但是 hold 方法引用了 listview
而不是它自己的项目。
您可以订阅物品模板持有事件。例如像这样:
<ListView.ItemTemplate>
<DataTemplate>
<Grid Holding="Grid_Holding" VerticalAlignment="Stretch">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem x:Name="EditButton"
Text="Edit"
Click="EditButton_Click"/>
<MenuFlyoutItem x:Name="DeleteButton"
Text="Delete"
Click="DeleteButton_Click"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<TextBlock Text="{Binding}" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
在后面的代码中,显示弹出窗口:
private void Grid_Holding(object sender, HoldingRoutedEventArgs e)
{
FrameworkElement senderElement = sender as FrameworkElement;
// If you need the clicked element:
// Item whichOne = senderElement.DataContext as Item;
FlyoutBase flyoutBase = FlyoutBase.GetAttachedFlyout(senderElement);
flyoutBase.ShowAt(senderElement);
}
private async void EditButton_Click(object sender, RoutedEventArgs e)
{
// get the clicked element:
Item datacontext = (e.OriginalSource as FrameworkElement).DataContext as Item;
await new MessageDialog("Edit").ShowAsync();
}
如果您愿意,也可以使用 Behaviours 来完成。您还可以在 Igrali's blog post.
找到一些帮助
如何在 listview
上按住项目时显示 flyout
菜单?我试过了,但是 hold 方法引用了 listview
而不是它自己的项目。
您可以订阅物品模板持有事件。例如像这样:
<ListView.ItemTemplate>
<DataTemplate>
<Grid Holding="Grid_Holding" VerticalAlignment="Stretch">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem x:Name="EditButton"
Text="Edit"
Click="EditButton_Click"/>
<MenuFlyoutItem x:Name="DeleteButton"
Text="Delete"
Click="DeleteButton_Click"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<TextBlock Text="{Binding}" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
在后面的代码中,显示弹出窗口:
private void Grid_Holding(object sender, HoldingRoutedEventArgs e)
{
FrameworkElement senderElement = sender as FrameworkElement;
// If you need the clicked element:
// Item whichOne = senderElement.DataContext as Item;
FlyoutBase flyoutBase = FlyoutBase.GetAttachedFlyout(senderElement);
flyoutBase.ShowAt(senderElement);
}
private async void EditButton_Click(object sender, RoutedEventArgs e)
{
// get the clicked element:
Item datacontext = (e.OriginalSource as FrameworkElement).DataContext as Item;
await new MessageDialog("Edit").ShowAsync();
}
如果您愿意,也可以使用 Behaviours 来完成。您还可以在 Igrali's blog post.
找到一些帮助