【发布时间】:2016-03-22 18:56:30
【问题描述】:
我正在学习 wpf/c#,并应用我学到的关于不同 wpf 布局的知识。我试图建立一个简单的员工列表/详细信息窗口,但我有小问题:
列表框高度大于窗口高度,而不是添加滚动条,其余元素不显示(某些元素显示一半)
这是一张图片:
这里是 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>
如何让列表框添加滚动条而不是当前效果?
【问题讨论】:
-
问题是主垂直
StackPanel。它允许它尽可能多地垂直增长。将其替换为Grid或DockPanel -
@dkozl 没有办法使用 StackPanel 并将垂直增长限制为窗口大小?
-
您可以限制
StackPanel的大小,但只会影响可见部分。垂直的StackPanel将永远给它的孩子无限的成长高度。类似地,同样的事情也会发生在宽度和水平StackPanel上。这就是StackPanel的工作原理 -
好的,谢谢@dkozl