Je suis nouveau à C# et WPF essayant d'obtenir ce que je devrais penser est une chose simple, mais cela ne fonctionne pas.Pourquoi mon DataGrid disparaît-il de l'écran quelle que soit la solution que j'essaie?
J'ai une grille de données remplie par SQL, et peu importe ce que j'essaie, je ne peux pas obtenir le Height
du DataGrid
pour rester dans la fenêtre. Ça descend toujours. Je veux que ce soit dynamique à la taille de la fenêtre.
Mon code très simple est ci-dessous, ou au moins cette itération la plus récente.
<Page x:Class="TMSMaintenance.PaymentError"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TMSMaintenance"
Title="PaymentError">
<!--<DataGrid Name="MydataGrid" CanUserAddRows="False" SelectionMode="Single" />-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" VerticalAlignment="Stretch" >
<DataGrid x:Name="MydataGrid"
VerticalAlignment="Stretch"
MinHeight="100"
VerticalScrollBarVisibility="Auto" VerticalContentAlignment="Stretch">
</DataGrid>
</DockPanel>
</Grid>
</Page>
J'ai essayé d'envelopper dans un ScrollView
- cela n'a pas fonctionné. J'ai essayé de définir le Height
en le liant à la fenêtre - cela n'a pas fonctionné. J'ai essayé le Grid.RowDefinition Height = "*"
et le "1*"
- cela n'a pas fonctionné. VerticalAlignment = "Stretch"
n'a également pas fonctionné.
Alors, qu'est-ce qui me manque? Edit: Peut-être que je devrais aussi dire que c'est sur un fichier Page
appelé dans une balise de trame. Je ne sais pas si cela fait une différence ici.
<StackPanel CanVerticallyScroll="True" CanHorizontallyScroll="True">
<!-- Navigation -->
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Button Content="Files Lookup" Margin="0,0,10,0"/>
<Button Content="Payment Error" Margin="0,0,10,0"/>
<Button Content="Carrier Maintenance" Margin="0,0,10,0"/>
<Button Content="Payment File" Margin="0,0,10,0" />
</StackPanel>
<ScrollViewer>
<Frame x:Name="MainFrame" NavigationUIVisibility="Hidden" ></Frame>
</ScrollViewer>
</StackPanel>
Tout ce que vous mettez dans un StackPanel (vertical) n'est pas redimensionné verticalement. Le StackPanel s'étend juste aussi loin que ses éléments enfants l'exigent. Mettez votre cadre dans une grille ou DockPanel. En outre, la définition des propriétés CanVerticallyScroll et CanHorizontallyScroll de StackPanel n'a aucun effet. Lisez les remarques sur leurs pages de documentation respectives. – Clemens
J'ai modifié votre question. Tout d'abord, j'ai supprimé les balises forcées du titre - voir [ici] (https://stackoverflow.com/help/tagging) pourquoi. Ensuite, j'ai changé votre code d'exemple pour être * minimal * (voir [mcve]). Vos échantillons ne doivent contenir aucun code qui ne soit pas pertinent pour les choses que vous posez. – dymanoid
Merci pour l'info @Clemens J'avais lu que moi-même tout en explorant les options, ma grille de données n'est pas dans un panneau de pile mais je ne crois pas que ce serait le problème. J'ai essayé une version de ce code où j'ai enlevé le stackpanel et tout son contenu et cela n'a fait aucune différence. –