2015-11-05 197 views
0

如何檢查窗口(主窗口)中有多少行ListView適合窗口大小。 我假設窗口是最大化的,只有系統設置決定了窗口的大小。 ListView通過選項FillLastChild停靠在DockPanel中。調整WPF控件大小以適應窗口大小

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

您是否試圖動態調整控件的高度和/或寬度?你把它放在一個網格內,並將高度調整爲自動? – leigero

+1

向我們展示您的XAML。構建一個可以儘可能少地展示您的問題的示例。 – Lorek

+0

XAML可以在上面查看 – iljon

回答

0

安排主網格中的所有內容。在網格行或列的定義:

「自動」,使網格單元調整到它 「*」被用來處理可用空間存在的控件的大小(創建其他的行或列後離開)。

對於一個詳細的教程:http://www.wpf-tutorial.com/panels/grid-units/

你一定能爲你讀它

你不需要這個列表框模板只爲分頁後希望調整控制。 WPF提供了內置的UI虛擬化。如果您需要數據虛擬化(分頁),您應該參考:http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization