XAML UWP ListView采用全屏高度,即使受Height参数(或MaxHeight或网格行高度)限制也是如此

qojgxg4l  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(92)

我正在用UWP做字典。我有ListView元素,里面的所有单词和页面底部的搜索框-都在两行网格内(ListView的高度是 *,TextBox的是32)。
问题是,ListView占用整个页面的高度,即使受到网格行高度的限制。设置高度或最大高度无效。项目仍然在TextBox(或其他元素)下可见。唯一改变的是,ListView项不可点击。
我试了很多搜索,但没有结果。你能帮我把剩下的东西藏起来吗?

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="40" />
        </Grid.RowDefinitions>
        
        <ListView Grid.Row="0" x:Name="SlovnikListView" ItemsSource="{x:Bind DictionaryEN}" IsItemClickEnabled="True" SelectionMode="None" ItemClick="SlovnikListView_ItemClick" VerticalAlignment="Top">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="local:Slovo">
                    <StackPanel Width="auto" Padding="5,10">
                        <TextBlock FontSize="13" Text="{x:Bind EnglishWord}"/>
                        <TextBlock FontSize="17" Text="{x:Bind CzechTranslation}"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <TextBox Grid.Row="1" VerticalAlignment="Stretch" PlaceholderText="Search" Opacity="1" Height="Auto" TextAlignment="Start" VerticalContentAlignment="Center" />

    </Grid>

字符串
以下代码的屏幕截图-其中一个项目位于搜索栏后面:
x1c 0d1x的数据
第一个网格行高设置为300像素的应用程序屏幕截图。请注意,项目仍然可见,但不可单击(或选择):


ee7vknir

ee7vknir1#

解决方法是将<VirtualizingStackPanel/>添加到ListView中。

<ListView Grid.Row="0" x:Name="SlovnikListView" ItemsSource="{x:Bind SlovnikSerazeny}" IsItemClickEnabled="True" SelectionMode="None" ItemClick="SlovnikListView_ItemClick" VerticalAlignment="Top">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="local:Slovo">
                <StackPanel Width="auto" Padding="5,10">
                    <TextBlock FontSize="13" Text="{x:Bind AnglickeSlovo}"/>
                    <TextBlock FontSize="17" Text="{x:Bind CeskyPreklad}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

字符串
我不知道它是做什么的,但它有助于溢出和一些奇怪的震动时,滚动。

相关问题