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
WPF列表框问题及其解决方案_Wpf_Listbox - Fatal编程技术网

WPF列表框问题及其解决方案

WPF列表框问题及其解决方案,wpf,listbox,Wpf,Listbox,我有一个WPF列表框控件。它可以有一个很长的项目列表 <StackPanel Orientation="Horizontal" Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0"> <Label FontWeight="Bold" FontSize="11" HorizontalAlignmen

我有一个WPF列表框控件。它可以有一个很长的项目列表

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>
当我使用正常屏幕分辨率(即1024*768)时,如果我提到列表框的最小高度和最大高度,它会正确地显示带有滚动条的列表框

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>
当我切换到另一个分辨率时,理想情况下是1280*1024,列表框应该适合屏幕分辨率。但事实并非如此。由于我提到的高度,它保持不变,留下了大量的空间,这显然不太好

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>
我需要一个正常分辨率为1024*768的滚动条,所以我必须输入MinHeight和MaxHeight

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>
是否有任何解决方案,可以查看扩展列表框,该列表框适当地占用空间以获得更高的分辨率

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>

谢谢

使用面板来布置控件-不要使用明确的宽度和高度。例如:

<Grid>
    <Grid.RowDefinitions>
        <Row Height="*"/>
        <Row Height="Auto"/>
    </Grid.RowDefinitions>

    <!-- ListBox will take up all remaining space after the Button -->
    <ListBox/>
    <!-- Button will take up only the space it needs -->
    <Button Grid.Row="1"/>
</Grid>
                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>

使用面板来布置控件-不要使用明确的宽度和高度。例如:

<Grid>
    <Grid.RowDefinitions>
        <Row Height="*"/>
        <Row Height="Auto"/>
    </Grid.RowDefinitions>

    <!-- ListBox will take up all remaining space after the Button -->
    <ListBox/>
    <!-- Button will take up only the space it needs -->
    <Button Grid.Row="1"/>
</Grid>
                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>

术语:
显示列

                <StackPanel Orientation="Horizontal"  Margin="0,0,0,5" VerticalAlignment="Top" HorizontalAlignment="Left" Grid.Row="0">
                    <Label  FontWeight="Bold" FontSize="11" HorizontalAlignment="Left" Margin="0,0,5,5">Term:</Label>
                    <ComboBox x:Name="Term" Margin="0,5,5,0">
                    </ComboBox>                        
                </StackPanel>
                <CheckBox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="displaySummaryCheckBox" Margin="2,2,0,5"  FontSize="11" Content="Display Summary" IsChecked="True" FontWeight="Normal"></CheckBox>

            </Grid>                
            <Grid DockPanel.Dock="Bottom">

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Label Grid.Row="0" VerticalAlignment="Top" Margin="0,0,0,4" HorizontalAlignment="Left" FontWeight="Bold" FontSize="11">Display Columns</Label>
                    <ListBox Grid.Row="1" VerticalAlignment="Top" Margin="5,0,5,4" HorizontalAlignment="Left" x:Name="columnsList" Width="197"  FontSize="11">

                    </ListBox>
                    <Button Grid.Row="2"  Margin="5,0,5,2" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="selectAll" Width="75" Content="Select All" FontWeight="Normal"  FontSize="11" Height="23" Click="selectAll_Click"/>
                </Grid>

            </Grid>

        </DockPanel>

术语:
显示列

很难说没有一些代码,我同意,你的问题可能是你的列表框放在什么类型的面板上。我们能看一些代码吗?很难说没有一些代码,真的,我同意,你的问题可能是你的列表框放在什么类型的面板上。我们可以看一些代码吗?包含列表框的行将自动调整大小。这意味着它只会像列表框要求的那样大。有关解决方案,请参阅我的帖子。包含列表框的行将自动调整大小。这意味着它只会像列表框要求的那样大。请参阅我的帖子以获得解决方案。