Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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_Listview - Fatal编程技术网

C# 调整WPF控件大小以适应窗口大小

C# 调整WPF控件大小以适应窗口大小,c#,wpf,listview,C#,Wpf,Listview,如何检查ListView中有多少行适合窗口主窗口。 我假设窗口是最大化的,只有系统设置决定窗口的大小。 ListView通过选项FillLastChild固定在DockPanel中 WPF是否提供了自动化此类操作的机制 问候 这是我的WPF。我想知道lstBox中可以容纳多少项,以便使用“后退”和“下一步”按钮控制分页 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.c

如何检查ListView中有多少行适合窗口主窗口。 我假设窗口是最大化的,只有系统设置决定窗口的大小。 ListView通过选项FillLastChild固定在DockPanel中

WPF是否提供了自动化此类操作的机制

问候

这是我的WPF。我想知道lstBox中可以容纳多少项,以便使用“后退”和“下一步”按钮控制分页

<Window x:Class="WpfApplication1.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:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <DataTemplate x:Key="ListBoxTemplate">
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Path=Name}" TextWrapping="Wrap"  />
                <TextBlock Grid.Column="1" Text="{Binding Path=Value}" TextWrapping="Wrap"  />
            </Grid>
        </DataTemplate>
    </Window.Resources>

    <DockPanel x:Name="MainPanel" LastChildFill="True">
    <Grid DockPanel.Dock="Bottom">
        <Grid.RowDefinitions>
            <RowDefinition Height="40" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="15*"/>
            <ColumnDefinition Width="75*"/>
            <ColumnDefinition Width="15*"/>
        </Grid.ColumnDefinitions>
        <Button x:Name="btnNext" Grid.Column="1" Grid.Row="0" VerticalAlignment="Top" Height="23" Content="Next" HorizontalAlignment="Right" Margin="0,6,0,0" Width="40" />
        <Button x:Name="btnBack" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="40" Height="23" Content="Back" Margin="0,6,0,0" />
    </Grid>
    <ItemsControl x:Name="lstBox" ItemsSource="{Binding}"  ItemTemplate="{DynamicResource ListBoxTemplate}" BorderBrush="#FF000000" 
                  BorderThickness="1,1,1,1"  VerticalAlignment="Stretch" />
    </DockPanel>
</Window>

在主网格中安排所有内容。在网格行或列定义中:

“自动”使网格单元调整到其中存在的控件的大小 *用于在创建其他列或行后处理剩余可用空间

有关详细教程,请参见:

阅读后,您一定能够按照自己的意愿调整控件


您不需要仅为分页而使用此列表框模板。WPF提供内置的UI虚拟化。如果您需要数据虚拟化分页,您应该参考以下内容:

是否尝试动态调整控件的高度和/或宽度?你有没有把它放在一个网格内,并将高度调整为自动?给我们看看你的XAML。构建一个示例,用尽可能少的行来演示您的问题。可以在上面查看XAML