C# Wpf列表框比窗口大
我正在学习wpf/c#,并应用我所学到的关于不同wpf布局的知识。我试图构建一个简单的员工列表/详细信息窗口,但我有一个小问题: 列表框的高度大于窗口的高度,并且不添加滚动条,元素的其余部分不显示(某些元素显示了一半) 这是一张图片: 下面是xaml:C# Wpf列表框比窗口大,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,我正在学习wpf/c#,并应用我所学到的关于不同wpf布局的知识。我试图构建一个简单的员工列表/详细信息窗口,但我有一个小问题: 列表框的高度大于窗口的高度,并且不添加滚动条,元素的其余部分不显示(某些元素显示了一半) 这是一张图片: 下面是xaml: <Window x:Class="elexim.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x
<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>
雇佣
笔名
年龄
萨拉尔
瓦利德
环空器
如何使列表框添加滚动条而不是当前效果?只需使用
StackPanel的Grid
:
让我举一个例子:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label HorizontalAlignment="Center">Employés </Label>
<Separator Grid.Row="1" Margin="20,0,0,0"/>
<Grid Grid.Row="2" 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>
</Grid>
问题是主垂直堆叠面板。它允许其垂直生长,因为他们想。将其替换为Grid
或DockPanel
@dkozl无法使用StackPanel并将Verical grow限制为windows大小?您可以限制StackPanel
的大小,但这只会影响其可见部分。垂直StackPanel
将始终为其子级提供无限高的生长空间。类似地,宽度和水平堆叠面板
也会发生同样的情况。这就是StackPanel
的工作方式谢谢@dkozl
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel ... />
</ScrollViewer>