2016-06-29 9 views
0

Ich habe ein simuliertes dynamisches Grid mit einer Liste von Listen. Die übergeordnete Listenansicht ist eine gruppierte Listenansicht. Es handelt sich um horizontal gestapelte Listen.Wie man Flyout auf ItemClick in Listenansicht zeigt Verschachtelt in einer gruppierten Listenansicht

Auf den innersten Zellen muss ich ein Flyout oder Popup anzeigen. Ich habe versucht, Flyouts auf SelectionChanged und ItemClicked Ereignisse der Kinderliste Elemente - die Flyouts einfach nicht angezeigt. Um ein Popup anzuzeigen, brauche ich Koordinaten - es gibt keine Möglichkeit, sie mithilfe der Ereignisse SelectionChanged und ItemClick zu erhalten.

Wenn ich versuche, die Koordinaten der angeklickten Zelle zu erhalten, erhält nur der vertikale Koordinatenwert den genauen Wert, für den horizontalen Offset bekomme ich einen statischen Wert, wahrscheinlich den horizontalen Offset der übergeordneten Liste.

Was kann ich tun, um ein Flyout/Popup anzuzeigen, wenn ich auf eine Zelle in den untergeordneten Listen klicke?

Dies ist der 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> 

Und dies ist mein Code-Behind:

 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)); 
     } 

Antwort

0

Dieser Code

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

sollte in Ihrem ValuesItemTemplate itemtemplate nicht in die angebracht werden Listenansicht

Verwandte Themen