J'ai une question sur la mise en page avec un listviewer à l'intérieur d'un scrollviewer. Une fois qu'une liste est à l'intérieur d'un scrollviewer, elle utilise sa taille maximale et ne défile pas d'elle-même, car le scrollviewer offre un espace illimité aux contrôles qu'il contient. Le problème est que les contrôles qui se trouvent sous une longue liste ne sont visibles que si l'utilisateur fait défiler vers le bas et je veux que la liste n'utilise que l'espace nécessaire et utilise une barre de défilement elle-même. Les images donnent plus d'informations que les mots (les liens pour les images donnent aussi beaucoup d'informations car ma réputation n'est pas encore à 10 ). Edit2 : je ne peux utiliser qu'un seul lien donc j'ai copié toutes les images sur un seul). Si les listes ne sont pas longues, tout va bien :
Photo 1 :
Maintenant, si la liste est plus longue, les contrôles ci-dessous descendent dans la zone invisible :
Photo 2 : voir le lien de la photo 1
Ce que je veux qu'il se passe maintenant, c'est ça :
Image 3 : voir le lien de l'image 1
Ce n'est pas vraiment un problème en soi, car nous pourrions tout mettre dans un dockpanal et ancrer les contrôles en dessous de Dock.Below et Top to Top et laisser le listview remplir le centre avec "lastchildfill". Maintenant, le vrai problème. Que se passe-t-il si la fenêtre devient plus petite ? Dans ce cas, la liste disparaît d'abord, puis tout le reste, sans qu'il soit possible d'utiliser une barre de défilement pour accéder aux commandes situées en bas.
Photo 4 : voir le lien depuis la photo 1
L'idéal solution Je cherche à avoir des barres de défilement sur la fenêtre (ou un scrollviewer Root) qui nous permettrait de faire défiler chaque section de la fenêtre comme ceci et d'avoir juste les barres de défilement extérieures pour être visibles une fois que tout a une taille minimale.
Photo 5 : voir le lien depuis la photo 1
UNE IDÉE ? trop d'images ? voici un petit bout de xaml pour que chacun puisse essayer de le faire fonctionner (c'est juste un exemple rapide de Windows...)
<Window x:Class="WpfTest1.ScrollTestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="ScrollTestWindow" Height="400" Width="700">
<ScrollViewer >
<DockPanel LastChildFill="True" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<Grid DockPanel.Dock="Top">
<TextBlock Text="Example controls above listview" Background="LightGray" FontSize="30"></TextBlock>
</Grid>
<Grid DockPanel.Dock="Bottom">
<TextBlock Text="Example controls below listview" Background="LightGray" FontSize="30"></TextBlock>
</Grid>
<ListView FontSize="30">
<ListView.View>
<GridView>
<GridViewColumn Width="190" Header="Date" />
<GridViewColumn Width="200" Header="Day Of Week" DisplayMemberBinding="{Binding DayOfWeek}" />
<GridViewColumn Width="120" Header="Year" DisplayMemberBinding="{Binding Year}" />
</GridView>
</ListView.View>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
</ListView>
</DockPanel>
</ScrollViewer>