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