我有一个用户控件,用于在网格中保存ListView。 但我的问题是,如果我最大化我的应用程序窗口,ListView维度(高度)不会相对于窗口更改。它始终保持相同的高度。在这种情况下200如下定义。
<UserControl x:Class="ModuleLogger.Views.ViewLogger"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="15" />
<RowDefinition Height="30" />
<RowDefinition Height="15" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="1" Grid.Column="0" Content="Log Entries" Style="{StaticResource myLblStatHeaderSmallStyle}" HorizontalAlignment="Stretch" Grid.ColumnSpan="6" />
<ListView x:Name="lvLogs" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding LogEntries}" Style="{StaticResource myListViewStyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="Log Entry" Width="810">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding Path=Entry}"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</UserControl>
<Style x:Key="myListViewStyle" TargetType="{x:Type ListView}">
<Setter Property="Background" Value="WhiteSmoke"/>
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Margin" Value="5,5,5,5"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Normal"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
用户控件本身在tabitem中使用。
<TabItem Header="Log" Name="tabLog" BorderBrush="LightGray" Style="{StaticResource myMainTabItemStyle}" VerticalContentAlignment="Stretch">
<ItemsControl Name="RegionLog" prism:RegionManager.RegionName="RegionLog" Grid.Column="0"/>
</TabItem>
我试图将RowDefinition更改为
<Grid.RowDefinitions>
<RowDefinition Height="15" />
<RowDefinition Height="30" />
<RowDefinition Height="15" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
这种方法解决了我的问题。但它带来了另一个问题。在这种情况下,我没有得到一个垂直滚动条。所以ListView变得无穷无尽了#34;你可以看到顶部的条目。
有没有办法定义Grid // ListView,以便在窗口调整大小时ListView自动调整大小?
答案 0 :(得分:2)
最后我可以解决问题。 关键是来自link的信息: ItemsControl占用其子元素所需的空间,这可能导致它大于屏幕。由于其大小基于其子控件,因此在重新调整屏幕大小时,ItemsControl不会调整大小。
所以下面的xaml部分导致了这个问题。
<TabItem Header="Log" Name="tabLog" BorderBrush="LightGray" Style="{StaticResource myMainTabItemStyle}" VerticalContentAlignment="Stretch">
<ItemsControl Name="RegionLog" prism:RegionManager.RegionName="RegionLog" Grid.Column="0"/>
</TabItem>
我没有使用ItemsControl,而是使用 ContentControl 。
<TabItem Header="Log" Name="tabLog" BorderBrush="LightGray" Style="{StaticResource myMainTabItemStyle}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
<ContentControl Name="RegionLog" prism:RegionManager.RegionName="RegionLog" Grid.Column="0"/>
</TabItem>
所以我的ListView只是扩展到ContentControl给出的最大大小。
也许这可以帮助将来遇到同样问题的人。