Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wpf列表框比窗口大_C#_Wpf_Xaml_Listbox - Fatal编程技术网

C# Wpf列表框比窗口大

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

我正在学习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

让我举一个例子:

<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>