J'ai un vision de défilement pour un StackPannel. Les utilisateurs souhaitent enregistrer la position de la vision de ScrollViewer afin que l'application soit rechargée avec leurs données, StackPannel affichera les articles qu'ils visualisaient auparavant. Cela n'a rien à voir avec lequel les éléments ont été sélectionnés, le cas échéant, simplement la potion de la vision de ScrollViewer par rapport aux éléments StackPannel. Donc, si la StackPannel a 50 éléments et que la vision de ScrollViewer est défilée de sorte que les éléments 20-25 de StackPannel sont visibles, je dois recharger l'application et faire défiler jusqu'à ce poste sans sélectionner un élément. En outre, j'utilise MVVM et j'aimerais définir la position ScrollViewer via le code de viewModel. P>
3 Réponses :
Avez-vous examiné à l'aide de ScrollViewer .Scrollinfo propriété? Il a des membres qui représentent le décalage de chaque barre de défilement ( horizontaloffset , VerticalOffset ) que vous pourriez essayer de lier. Je ne sais pas si ce sont des propriétés de dépendance, cependant. P>
Une autre option serait de trouver la barre de défilement code> réelle code> dans l'arborescence visuelle et de se lier à la position code> code> de chacune d'elles. P>
C'est plus un commentaire qu'une réponse imo.
Sous l'échantillon stockera le décalage de défilement dans une machine virtuelle et le chargera lorsque la fenêtre (TestWindow) s'ouvre. Vous devez également stocker et charger la taille de la fenêtre car elle affectera probablement le décalage de défilement également. Si vous voulez, vous pouvez déplacer le code derrière TestWindow en une classe de comportement attachée.
xaml: p> code derrière: p> Utilisation: P> private void OnOpenOpenTestWindow(object sender, RoutedEventArgs e)
{
TestWindow testWindow = new TestWindow();
testWindow.DataContext = _vm;
testWindow.Show();
}
private VM _vm = new VM();
Vous pouvez également définir la position d'un ScrollViewer en appelant le ScrollToverticaloffset Méthode.
contentScrollViewer.ScrollToVerticalOffset(50);
J'ai regardé dans Scroll.scrolltohorizontalOffset () mais je voudrais lier cela en quelque sorte à ma viewModel