如何为gridview onclick中的每一行创建下拉菜单(UWP Windows 10应用程序)

用户名

在此处输入图片说明

我想单击gridview中的任何行,然后在被单击的行下出现一个菜单,请帮忙?

这是我的代码

            <GridView.ItemTemplate>
                 <DataTemplate x:DataType="data:RoomInfo" x:Name="gridDataTemplate">
                     <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Tapped="StackPanel_Tapped" x:Name="sp" >
                         <TextBlock x:Name="RoomNo" FontSize="25" Foreground="White" Padding="20" Text="{x:Bind RoomNo}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="120"/>
                         <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{x:Bind host}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="130"/>
                         <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{x:Bind Status}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="150"/>
                         <Image x:Name="AvailabilityLogo" Source="{x:Bind imageSource}"  Width="15" HorizontalAlignment="Center" VerticalAlignment="Center"></Image>
                         <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{x:Bind Date}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="170"/>
                         <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{x:Bind TimeFrom}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100"/>
                         <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{x:Bind TimeTo}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100"/>
                     </StackPanel>
                 </DataTemplate>

             </GridView.ItemTemplate>
         </GridView>
格蕾丝·冯

您可以将UserControl用作每个项目的内容,方法是在解决方案资源管理器中右键单击该项目,然后选择“添加”和“新建项目...”,在弹出窗口中选择“用户控件”,为该项目命名并确认创建一个。

现在,您可以像这样修改用户控件:

<UserControl
    x:Class="DropDownMenuForeachRowInGridView.MyUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:DropDownMenuForeachRowInGridView"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Tapped="StackPanel_Tapped" Grid.Row="0">
            <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{Binding RoomNo}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="120" />
            <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{Binding host}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="130" />
            <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{Binding Status}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="150" />
            <Ellipse Width="15" Height="15" Fill="{Binding ellipseColor}" VerticalAlignment="Center" HorizontalAlignment="Center" />
            <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{Binding Date}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="170" />
            <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{Binding TimeFrom}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" />
            <TextBlock FontSize="25" Foreground="White" Padding="20" Text="{Binding TimeTo}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" />
        </StackPanel>
        <StackPanel x:Name="dropDown" Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Center" Grid.Row="1" Visibility="Collapsed" BorderBrush="White" BorderThickness="2" CornerRadius="5">
            <TextBlock Text="Host:" FontSize="25" Padding="20" VerticalAlignment="Center" HorizontalAlignment="Center" />
            <TextBox  FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center" Width="120" />
            <Button Content="Book now" Click="Button_Click" Margin="30,0,0,0" />
        </StackPanel>
    </Grid>
</UserControl> 

后面的代码:

public sealed partial class MyUserControl : UserControl
{
    public ObservableCollection<RoomInfo> roominfo;

    public MyUserControl()
    {
        this.InitializeComponent();
        roominfo = new ObservableCollection<RoomInfo>();
        roominfo.Clear();
        roominfo.Add(new RoomInfo { RoomNo = "2NR12", host = "Available", Status = "Available", ellipseColor = "#FF008000", Date = "June 18,2016", TimeFrom = "02:00", TimeTo = "03:00" });
        roominfo.Add(new RoomInfo { RoomNo = "2NR12", host = "Ayman", Status = "Meeting", ellipseColor = "#FFFF0000", Date = "June 19,2016", TimeFrom = "11:00", TimeTo = "All Day" });
    }

    private void StackPanel_Tapped(object sender, TappedRoutedEventArgs e)
    {
        dropDown.Visibility = Visibility.Visible;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        dropDown.Visibility = Visibility.Collapsed;
    }
}

现在的问题是如何在中使用它GridViewDataTemplate在执行此操作之前,我们需要知道此用户控件可以扩展,因此该控件的高度可以动态更改。并且GridView控件使用ItemsWrapGrid作为其控件ItemsPanel,这将强制所有其他项目的大小与第一个项目的大小相同。

基本上,这意味着,如果您将第一个项目展开,则其他项目会将高度更改为第一项的高度,但不会展开下拉菜单;如果未展开第一项,则在您展开其他项目时,展开的项目,原始项目将被调整大小。因此,我只在ListView中都使用了此用户控件GridView,您可以将它们进行比较。

<ListView x:Name="listView" ItemsSource="{x:Bind roominfo}" Header="ListView">
    <ListView.ItemTemplate>
        <DataTemplate>
            <local:MyUserControl />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

<GridView x:Name="gridView" ItemsSource="{x:Bind roominfo}" VerticalAlignment="Bottom" Header="GridView">
    <GridView.ItemTemplate>
        <DataTemplate>
            <local:MyUserControl />
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

后面的代码:

private ObservableCollection<RoomInfo> roominfo;

public MainPage()
{
    this.InitializeComponent();
    MyUserControl control = new MyUserControl();
    roominfo = control.roominfo;
}

这是我的演示的渲染图像:

在此处输入图片说明

如果您需要我的演示进行测试,请在此处检查

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Windows 10 中杀死 UWP 应用程序?

来自分类Dev

如何在 Windows 10 中模拟 iOS 应用程序

来自分类Dev

如何降级 Windows 10 应用程序

来自分类Dev

如何在Windows 8 / Windows 10中创建应用程序快捷方式

来自分类Dev

如何从Windows 10中的所有应用程序列表中删除已卸载的应用程序

来自分类Dev

如何快速浏览Windows 10的“开始”菜单“应用程序”列表?

来自分类Dev

如何将Qt应用程序部署到UWP或Windows 10移动版

来自分类Dev

如何处理自定义应用程序设置?Windows 10 UWP C#

来自分类Dev

如何从终端(cmd)启动Windows 10 appx(UWP)应用程序

来自分类Dev

UWP Windows-10:如何在商店应用程序中使用线程本地存储API

来自分类Dev

如何使用Powershell为Windows 10 Universal应用程序创建桌面快捷方式?

来自分类Dev

如何在Windows 10 Preview中安装应用程序请求路由ARR 3.0?

来自分类Dev

如何在Electron应用程序中获得Windows 10的主要颜色?

来自分类Dev

如何在Windows 10中显示已安装的应用程序列表(仅“ Metro”)?

来自分类Dev

如何在默认的Windows 10计时器应用程序中禁用警报声音

来自分类Dev

如何在平铺和锁定屏幕中禁用Windows 10 Mail应用程序的邮件计数

来自分类Dev

如何防止应用程序在Windows 10中打开Web浏览器?

来自分类Dev

如何在Windows 10中添加不扩展到应用程序固定列表的文档?

来自分类Dev

如何从Windows 10专业版中永久删除不需要的应用程序?

来自分类Dev

如何在Windows 10移动版应用程序中锁定屏幕?

来自分类Dev

如何在Windows 10中重命名已安装的应用程序?

来自分类Dev

如何运行单个命令以显示Windows 10中所有已安装的应用程序?

来自分类Dev

如何从外部在Windows 10中启动具有特定电影的netflix应用程序?

来自分类Dev

如何防止 SIGBREAK 在 Windows 10 中终止 Ubuntu 应用程序?

来自分类Dev

控制台应用程序如何在 Windows 10 核心输出包中添加?

来自分类Dev

如何在特定文件夹中启动 Windows 10 Mail 应用程序?

来自分类Dev

如何为商店构建Windows 10通用应用程序包

来自分类Dev

如何以编程方式从Windows 10应用程序启动Camera应用程序?

来自分类Dev

如何使用自定义应用程序替换Windows 10上的登录应用程序

Related 相关文章

  1. 1

    如何在 Windows 10 中杀死 UWP 应用程序?

  2. 2

    如何在 Windows 10 中模拟 iOS 应用程序

  3. 3

    如何降级 Windows 10 应用程序

  4. 4

    如何在Windows 8 / Windows 10中创建应用程序快捷方式

  5. 5

    如何从Windows 10中的所有应用程序列表中删除已卸载的应用程序

  6. 6

    如何快速浏览Windows 10的“开始”菜单“应用程序”列表?

  7. 7

    如何将Qt应用程序部署到UWP或Windows 10移动版

  8. 8

    如何处理自定义应用程序设置?Windows 10 UWP C#

  9. 9

    如何从终端(cmd)启动Windows 10 appx(UWP)应用程序

  10. 10

    UWP Windows-10:如何在商店应用程序中使用线程本地存储API

  11. 11

    如何使用Powershell为Windows 10 Universal应用程序创建桌面快捷方式?

  12. 12

    如何在Windows 10 Preview中安装应用程序请求路由ARR 3.0?

  13. 13

    如何在Electron应用程序中获得Windows 10的主要颜色?

  14. 14

    如何在Windows 10中显示已安装的应用程序列表(仅“ Metro”)?

  15. 15

    如何在默认的Windows 10计时器应用程序中禁用警报声音

  16. 16

    如何在平铺和锁定屏幕中禁用Windows 10 Mail应用程序的邮件计数

  17. 17

    如何防止应用程序在Windows 10中打开Web浏览器?

  18. 18

    如何在Windows 10中添加不扩展到应用程序固定列表的文档?

  19. 19

    如何从Windows 10专业版中永久删除不需要的应用程序?

  20. 20

    如何在Windows 10移动版应用程序中锁定屏幕?

  21. 21

    如何在Windows 10中重命名已安装的应用程序?

  22. 22

    如何运行单个命令以显示Windows 10中所有已安装的应用程序?

  23. 23

    如何从外部在Windows 10中启动具有特定电影的netflix应用程序?

  24. 24

    如何防止 SIGBREAK 在 Windows 10 中终止 Ubuntu 应用程序?

  25. 25

    控制台应用程序如何在 Windows 10 核心输出包中添加?

  26. 26

    如何在特定文件夹中启动 Windows 10 Mail 应用程序?

  27. 27

    如何为商店构建Windows 10通用应用程序包

  28. 28

    如何以编程方式从Windows 10应用程序启动Camera应用程序?

  29. 29

    如何使用自定义应用程序替换Windows 10上的登录应用程序

热门标签

归档