2017-10-16 3 views
0

Est-il possible de faire défiler la vue dans SemanticZoom? Le SemanticZoom n'a pas la méthode ScrollIntoView (contrairement à ListView). Donc, quand le SemanticView est zoomé, je ne peux pas zoomer sur un élément de groupe. J'ai essayé de le faire en récupérant ScrollViewer comme ceci:UWP ScrollIntoView dans SemanticZoom

var root = VisualTreeHelper.GetChild(semanticView, 0); 
var scrollviewer = VisualTreeHelper.GetChild(root, 0) as ScrollViewer; 

... mais je ne suis pas en mesure d'obtenir le UIElement de l'élément cible.

Répondre

0

J'ai finalement réussi à récupérer mon gridview contenu dans le ZoomedInView. En fait, j'utilisais une CollectionViewSource dans ce GridView. Et il arrive qu'il est également possible de faire défiler vers un groupe et pas seulement vers un objet que je ne connaissais pas.

1

Pour synchroniser ZoomedInView et ZoomedOutView vous pouvez utiliser ci-dessous le code

private void SemanticZoom_ViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e) 
{ 
    if (e.IsSourceZoomedInView == false) 
    { 
     e.DestinationItem.Item = e.SourceItem.Item; 
    } 
} 

Si vous voulez faire défiler une autre fois puis utilisez ci-dessous le code

var zoomLoc = new SemanticZoomLocation() { Item = /* Item to navigate */}; 
mySemanticZoom.ZoomedInView.MakeVisible(zoomLoc); 
+0

comme je l'ai mentionné, je n'ai aucun problème à récupérer le scrollviewer. D'un autre côté, je ne peux pas faire défiler un élément de son index. Note, j'essaye de faire ceci dans un contrôle de SemanticZoom qui est agrandi. –

+0

@SamuelLIOULT J'ai mis à jour ma réponse –

+0

le problème est le SemanticZoom ne contient pas la méthode de ContainerFromIndex en tant que ListViewBase. Et je ne peux pas l'obtenir avec SemanticZoom lorsque sa valeur de propriété IsZoomedInViewActive est true. –