none
[UWP] Expander sur une partie d'une vue RRS feed

  • Discussion générale

  • Bonjour à tous,

    J'ai cas un peu particulier, que j'ai déjà vu dans certaines applications, mais dont je n'ai aucune idée du comment faire.

    Afin d'éclaircir mes explications, voici une vue schématisée :

    Dans cette vue, le problème est que le "Content 1" et le "Content 2" ne laisse que peu de place à ma ListView ("Content 3").

    Ce que je souhaiterais faire c'est que quand l'utilisateur scroll vers le haut, le "Content 1" disparaisse en haut afin de libérer de l'espace. De même, lorsque je scroll vers le bas, et que je suis arrivé au début de ma liste, le "Content 1" réapparaisse.

    Si quelqu'un a une idée pour faire cela je suis preneur, mes tests restant pour l'instant infructueux.

    Merci !

    Samuel


    mercredi 4 mai 2016 13:50

Toutes les réponses

  • Bonjour, Samuel LIOULT,

    Développez-vous une application UWP ou une application pour Windows 8.1 ? Pourriez-vous publier un extrait de code ?

    Cordialement,
    Dimitar

    jeudi 5 mai 2016 13:47
    Modérateur
  • Bonjour Dimitar,

    Merci de votre réponse. Je développe donc une application UWP. Il ne me semble pas vraiment utile de publier un extrait de code puisque mon problème est surtout que je ne sais pas comment il est possible de faire cela en Xaml. J'ai fait des tests avec le contrôle ScrollViewer mais rien qui ne se rapproche vraiment de mon objectif.

    Merci

    Samuel

    jeudi 5 mai 2016 13:51
  • Je me permets de relancer ce sujet qui n'a jamais eu de réponse...
    jeudi 21 juillet 2016 10:41
  • Bonjour Samuel LIOULT,

    Quel type de container contient ces éléments : un grid, un stackpanel, ... ?

    Cordialement,

    jeudi 21 juillet 2016 11:44
  • Bonjour Arthur LeMeur,

    Ces éléments sont contenus dans une Grid. Par ailleurs, je "Content 1" est une image.

    Merci

    jeudi 21 juillet 2016 11:52
  • Bonjour,

    Du coup, vous souhaitez quelque chose comme :

    // Code bedind de la page MainPage
    public sealed partial class MainPage : Page
    {
        // On déclare un scrollviewver pour récupérer celui de la listeView lv1
        private ScrollViewer sv = new ScrollViewer();
    
        // Evénement page loaded
        // On récupère le scroll du listview et on abonne à l'événement ViewChanged
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            sv = GetScrollViewer(lv1);
            sv.ViewChanged += Sv_ViewChanged1;
        }
    
        // On gère le cas du scroll et la visibilité du contenue 1
        private void Sv_ViewChanged1(object sender, ScrollViewerViewChangedEventArgs e)
        {
            var verticalOffset = sv.VerticalOffset;
    
            if (verticalOffset > 0)
            {
                MainGrid.RowDefinitions[1].Height = new GridLength(0);
            }
            else
            {
                MainGrid.RowDefinitions[1].Height = new GridLength(1, GridUnitType.Star);
            }
        }
    
        // méthode qui récupère le scrollviewer dans le listeview
        private ScrollViewer GetScrollViewer(DependencyObject depObj)
        {
            if (depObj is ScrollViewer) return depObj as ScrollViewer;
    
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
            {
                var child = VisualTreeHelper.GetChild(depObj, i);
    
                var result = GetScrollViewer(child);
                if (result != null) return result;
            }
            return null;
        }
    }

    Cordialement,

    jeudi 21 juillet 2016 13:17