【问题标题】:How to show flyout on itemclick in listview nested in a grouped listview如何在嵌套在分组列表视图中的列表视图中的 itemclick 上显示弹出框
【发布时间】:2016-06-29 21:17:44
【问题描述】:

我有一个模拟的动态网格,使用列表列表。父列表视图是一个分组列表视图。它的项目是水平堆叠的列表。

在最里面的单元格上,我需要显示一个弹出窗口或弹出窗口。我尝试在子列表项目的 SelectionChanged 和 ItemClicked 事件上使用 Flyouts - Flyouts 根本不显示。要显示弹出窗口,我需要坐标 - 无法使用 SelectionChanged 和 ItemClick 事件来获取它们。

如果我尝试获取单击的单元格的坐标,则只有垂直坐标值是准确值,对于水平偏移量,我得到一个静态值,可能是父列表的水平偏移量。

当我单击子列表中的单元格时,我可以做些什么来显示弹出/弹出窗口?

这是 Xaml:

        <ScrollViewer x:Name="ResultsPanelScrollViewer"
            Grid.Column="1"
            HorizontalScrollBarVisibility="Auto"
            HorizontalScrollMode="Enabled"
            VerticalScrollBarVisibility="Disabled"
            VerticalScrollMode="Disabled">             
        <utils:AlternatingRowListView x:Name="ResultsPanel"
            Margin="0"
            EvenRowBackground="{StaticResource LabResultsListItemBackground}" 
            ItemContainerStyle="{StaticResource ResultsPanelListViewItemStyle}" 
            ItemsSource="{Binding LabResultsDetailsCollection.View,Mode=OneWay}"
            OddRowBackground="{StaticResource ListViewItemBackground}"
            RelativePanel.RightOf="CategoriesPanel" 
            ScrollViewer.VerticalScrollBarVisibility="Visible" 
            ScrollViewer.VerticalScrollMode="Enabled" SelectionMode="None">
        <ListView.GroupStyle>
            <GroupStyle HeaderContainerStyle="{StaticResource 
            LabResultsListViewGroupStyle}" 
            HeaderTemplate="{StaticResource ValuesListHeaderTemplate}" />
        </ListView.GroupStyle>
           <ListView.ItemTemplate>
                <DataTemplate>
                      <ListView Margin="0"
                       ItemTemplate="{StaticResource ValuesItemTemplate}"
                       ItemsSource="{Binding LabResults}"
                       Padding="0"
                       IsItemClickEnabled="True"
                       ItemClick="ListView_ItemClick">
                       <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Margin="0"
                               Orientation="Horizontal"
                               Padding="0" />
                        </ItemsPanelTemplate>
                       </ListView.ItemsPanel>
                       <FlyoutBase.AttachedFlyout>
                          <Flyout>
                              <TextBlock Text="sdfasd"/>
                          </Flyout>
                       </FlyoutBase.AttachedFlyout>
                     </ListView>
                </DataTemplate>

            </ListView.ItemTemplate>
    </utils:AlternatingRowListView>
</ScrollViewer>

这是我的代码隐藏:

        private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var x = sender as ListView;    
            var gt = x.TransformToVisual(this);
            var screenPoint = gt.TransformPoint(new Point(0, 0));    
            FlyoutBase.ShowAttachedFlyout(sender as FrameworkElement);
        }

        private void ListView_ItemClick(object sender, ItemClickEventArgs e)
        {
            var x = sender;    
            var gt = ((ListView)e.OriginalSource).TransformToVisual(this);
            var screenPoint = gt.TransformPoint(new Point(0, 0));
        }

【问题讨论】:

    标签: listview uwp uwp-xaml


    【解决方案1】:

    这段代码

                      <FlyoutBase.AttachedFlyout>
                          <Flyout>
                              <TextBlock Text="sdfasd"/>
                          </Flyout>
                       </FlyoutBase.AttachedFlyout>
    

    应该附加在您的 ValuesItemTemplate 项目模板中,而不是在列表视图中

    【讨论】:

      猜你喜欢
      • 2020-11-20
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2021-07-17
      • 2015-07-16
      相关资源
      最近更新 更多