更新listview高度以填充新表单内容(c#)

时间:2013-05-14 00:39:51

标签: c# xml listview height

我有一个带有包含listview的边框的表单,在我的c#代码中,边框的高度根据值而改变。现在边框高度没有问题但是如何更新listview以使其具有与边框相同的高度?这是我的xml:

 <DataTemplate x:Key="PackageTemplate">
        <Border x:Name="PackageBorder" BorderBrush="Black" BorderThickness="2" Margin="10" Padding="0" Width="100" >
            <Border.Style>
                <Style>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=Status}" Value="1">
                            <Setter Property="Border.Background" Value="#FF999696"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Path=Status}" Value="0">
                            <Setter Property="Border.Background" Value="#FFE4E4E4"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Path=Layout}" Value="0">
                            <Setter Property="Border.Height" Value="100"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Path=Layout}" Value="1">
                            <Setter Property="Border.Height" Value="200"/>
                        </DataTrigger>
                    </Style.Triggers>                           
                </Style>
            </Border.Style>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="70"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>

                <ListView  Grid.Row="0" Grid.Column="0" Background="{x:Null}" x:Name="List" ItemsSource="{Binding Path=Collection}" ItemTemplate="{DynamicResource ChipTemplate}" 
                          ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" BorderThickness="0" BorderBrush="{x:Null}" Foreground="Black" VerticalAlignment="Top" Width="90" >
                    <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Orientation="Horizontal" VerticalAlignment="Center" />
                        </ItemsPanelTemplate>
                    </ListView.ItemsPanel>
                </ListView>

                <Label Grid.Row="1" Grid.Column="0" Content="{Binding Path=Location}" FontSize="15" FontFamily="Arial" Foreground="Black" Background="{x:Null}" VerticalAlignment="Bottom" HorizontalAlignment="Left"></Label>                  
            </Grid>
        </Border>            
    </DataTemplate>

1 个答案:

答案 0 :(得分:2)

Xaml中,通过设置<RowDefinition Height="70"/>并将宽度设置为90,将ListView高度设置为70,ListView将不会大于此值,您需要设置<RowDefinition Height="70*"/>允许它在高度上增长并删除Width =“90”,或者使用DockPanel

    <DockPanel>
        <Label DockPanel.Dock="Bottom" Content="{Binding Path=Location}" FontSize="15" FontFamily="Arial" Foreground="Black"  />
        <ListView x:Name="List" ItemsSource="{Binding Path=Collection}" ItemTemplate="{DynamicResource ChipTemplate}" 
                      ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" BorderThickness="0" BorderBrush="{x:Null}" Foreground="Black" >
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Horizontal" VerticalAlignment="Center" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
    </DockPanel>