11
votes

Comment désactiver le défilement à l'intérieur de DataGrid dans WPF C #

J'ai fait verticalscrollbarVisibilité = "désactivé" car je ne veux pas que le contenu à l'intérieur de DataGrid soit visualisé, qui traverse la hauteur attribuée. Je ne suis pas capable de voir la barre de défilement après avoir donné la déclaration ci-dessus. Mais je peux toujours faire défiler les lignes et voir les rangées. Merci


0 commentaires

5 Réponses :


6
votes

Une fois que vous avez désactivé le verticalscrollbarVisibilité pour votre DATGRID, vous devez désactiver la fonctionnalité de défilement du ScrollViewer comme ceci:

ScrollViewer.cancontentscroll = "FALSE"

Mais lorsque vous faites, assurez-vous de vous assurer que vous avez déjà défini une hauteur standard pour l'ensemble de votre DataGrid et vos lignes DataGrid de telle sorte que l'utilisateur puisse voir toutes les lignes que vous souhaitez qu'ils voient, sinon les rangées hachées ne seront pas affichées. et l'utilisateur ne peut pas faire défiler le bas pour les voir.

J'espère que cela aide.


0 commentaires

4
votes

Autoriser datagrid à afficher tout ce contenu (il n'est donc pas nécessaire de défiler la barre de défilement): xxx

Vous pouvez mettre le résultat dans n'importe quel endroit. Ça va réduire la taille des dimensions du propriétaire


0 commentaires

0
votes

Je voulais juste ajouter une réponse appliquée aux colonnes. À l'occasion, vous constaterez peut-être que le DataGrid va faire défiler des colonnes supplémentaires que vous préférez rester invisibles, surtout si la hauteur est spécifiquement ajustée afin que toutes les colonnes supplémentaires soient invisibles. J'ai simplement joint un gestionnaire chargé sur le DataGrid et définir toutes les colonnes supplémentaires sur une largeur de 0 et les a rendu cachés.


0 commentaires

8
votes

L'approche correcte serait de désactiver la cible HIT

DataGrid.IsHitTestVisible = false;


2 commentaires

Cela fonctionne, mais ne résout pas le problème si vous espérez être capable de cliquer dans la grille de données (juste pour ignorer le défilement de la souris à l'intérieur)


Il désactive également un clic sur les rangées.



2
votes

La solution acceptée n'a pas fonctionné pour moi depuis que j'avais besoin de sélection de ligne. J'ai résolu toutes mes problèmes en désactivant le panneau DataGrid (pour le glissement de la souris) et la manipulation des événements de la clé (pour le clavier). Dans DataGrid XAML:

private void OnDatagridPreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Right || e.Key == Key.Left)
        e.Handled = true;
}


0 commentaires