i wpf/C# bin lernen und anzuwenden, was ich über die differents wpf Layout gelernt habe ich versucht, eine einfache Mitarbeiter Liste/Details Fenster zu bauen, aber ich habe ich wenig Probleme:Wpf Listbox größer als die windos
die Listbox ist in der Höhe größer ist als die Höhe der Fenster, und anstatt eine Scrollbar hinzugefügt wird, wird der Rest des Elements zeigt nicht (einige Elementhälften Show sind)
hier ist ein Bild:
und hier ist das Xaml:
<Window x:Class="elexim.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:elexim"
mc:Ignorable="d"
Title="MainWindow">
<StackPanel Orientation="Vertical">
<Label HorizontalAlignment="Center">Employés </Label>
<Separator Margin="20,0,0,0"/>
<Grid Margin="0,20,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<GroupBox Header="Liste Employés" Margin="20,0,0,0">
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
<local:employeeInfo/>
</ListBox>
</GroupBox>
<GroupBox Header="Detail Employé" Margin="20,0,0,0" Grid.Column="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Margin="10">Nom</Label>
<TextBox Grid.Column="1" VerticalAlignment="Center"/>
<Label Grid.Column="0" Grid.Row="1" Margin="10">Age</Label>
<TextBox Grid.Row="1" Grid.Column="1" VerticalAlignment="Center"/>
<Label Grid.Column="0" Grid.Row="2" Margin="10">Salaire</Label>
<TextBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Center"/>
<StackPanel Orientation="Horizontal" Grid.Column="0"
Grid.Row="3" Grid.ColumnSpan="2"
HorizontalAlignment="Right">
<Button Margin="10" MinWidth="100">Valider</Button>
<Button Margin="10" MinWidth="100">Annuler</Button>
</StackPanel>
</Grid>
</GroupBox>
</Grid>
</StackPanel>
</Window>
wie kann ich die Listbox eine Scrollbar statt der aktuellen Effekt hinzufügen machen?
Problem ist die vertikale Haupt 'StackPanel' . Es erlaubt, vertikal so viel zu wachsen, wie sie wollen. Ersetze es mit 'Grid' oder' DockPanel' – dkozl
@dkozl gibt es keine Möglichkeit, StackPanel zu benutzen und die Größe auf die Fenstergröße zu beschränken? – karim
Sie können die Größe von 'StackPanel' begrenzen, aber nur den sichtbaren Teil. Das vertikale 'StackPanel' gibt seinen Kindern immer eine unendliche Höhe. Analog wird das gleiche mit der Breite und dem horizontalen 'StackPanel' passieren. So soll 'StackPanel' funktionieren – dkozl