J'ai actuellement deux vues alternées de ScrollViewer contenant de la même collection. J'ai lié le défilement des deux huissiers de défilement ensemble en manipulant l'événement ScrollChanged et en utilisant ScrollToverticalOffetSetSet. P>
Pour des raisons de présentation, j'ai défini à la fois des barres de défilement ScrollViewer sur Caché et souhaitez les contrôler à partir d'une barre de défilement séparée. P>
Cela semble ne pas être simple. Je me souviens de voir un blog à ce sujet il y a quelques mois, mais je ne peux plus le trouver. P>
Quelqu'un peut-il me dire dans la direction de certaines ressources utiles ou me donner une poussée dans la bonne direction de la manière dont cela pourrait être atteint. P>
Merci d'avance. P>
3 Réponses :
OK, résolu ceci. Était en fait assez simple.
ont depuis trouvé WPF reliure à une fonction , qui devrait aider quelqu'un d'autre intéressé . Son VB mais devrait être suffisamment clair. P>
acclamations p>
Suite à ci-dessus: I Scroll de la barre de défilement et passés dans la vision de ScrollViewer, je voulais lier.
Semble fonctionner ok. P>
génial, juste ce dont j'avais besoin. J'ai étendu un peu de sorte que la vision de ScrollViewer puisse être définie à partir de XAML en utilisant une propriété de dépendance. Dans xaml: code: p>
Comment puis-je lier la barre de liaison à un élément de modèle une fois que le modèle est appliqué? Mon autre ScrollViewer n'existe pas encore lorsque la barre de défilement liée est créée, l'élément n'est donc pas lié.
Serait-ce une meilleure idée de définir largechange = 0,1 * maximum; code> et
smallchange = 0,02 * maximum; code> au lieu d'utiliser des valeurs codées strictes?
@Jamesjoshuasteet Vous pouvez vous abonner à un événement puis vous désabonner. Par exemple, dans mon cas, j'essaie de lier à un DataGrid code>, où
ScrollViewer code> n'existe pas au moment de la liaison. Dans
OnboundDataGridPropertyChanged Code> i Bind to
Chargé CODE> Evénement:
((Datagramrid) E.Newvalue). Chargé + = expéditeur.onboundTablineded; code>. Ensuite, dans
OnboundTaBlakeLoaded Code>, je me désabonne
OnboundTablineded code> de celui-ci.
Je fais quelque chose de beaucoup plus simple, voici:
J'ai 2 listviews: Les deux implémentent l'événement "ScrollViewer.scrollchanged": p>
public class DependencyObjectFunctions { public static DependencyObject GetChildOfType<T>(DependencyObject o) { // Return the DependencyObject if it is a Type T (ScrollViewer in my case) if (o is T) { return o; } for (int i = 0; i < VisualTreeHelper.GetChildrenCount(o); i++) { var child = VisualTreeHelper.GetChild(o, i); var result = GetChildOfType<T>(child); if (result == null) { continue; } else { return result; } } return null; } }