【问题标题】:Adjusting WPF control size in order to fit to window size调整 WPF 控件大小以适应窗口大小
【发布时间】:2015-11-06 20:31:25
【问题描述】:

如何检查 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>

【问题讨论】:

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

标签: c# wpf listview


【解决方案1】:

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

“自动”使网格单元格调整为其中存在的控件的大小 “*”用于处理可用的空闲空间(在创建其他列或行之后留下)。

详细教程:http://www.wpf-tutorial.com/panels/grid-units/

你一定能在阅读后随心所欲地调整你的控件

您不需要这个列表框模板只是用于分页。 WPF 提供内置的 UI 虚拟化。如果你需要数据虚拟化(分页),你应该参考这个:http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 2014-07-04
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2011-10-22
    相关资源
    最近更新 更多