代码之家  ›  专栏  ›  技术社区  ›  A. Schmidt

XAML:ListViewItem中的StackPanel/GridView不占用ListViewItem的整个空间

  •  0
  • A. Schmidt  · 技术社区  · 7 年前

    我的问题是,我的第一个红色矩形(见图片中的第1个第3个)没有ListViewItem的高度,而第二个文本较大的矩形具有相同的大小。此外,左边还有一个边距,这不是我自己定义的。类似的场景似乎出现在一个按钮上,其中蓝线并没有填满按钮的整个高度(图中的第二个三分之一)。

    我还将我的XAML代码留在这里,并提前向您表示感谢。

    Picture showing the problem

    <Page
        x:Class="Testprojekt.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Testprojekt"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"/>
                <ColumnDefinition Width="1*"/>
                <ColumnDefinition Width="1*"/>
            </Grid.ColumnDefinitions>
    
            <ListView Grid.Column="0">
                <ListViewItem>
                    <StackPanel Orientation="Horizontal">
                        <Rectangle Fill="Red" Width="5"/>
                        <TextBlock Text="red"/>
                    </StackPanel>
                </ListViewItem>
                <ListViewItem>
                    <StackPanel Orientation="Horizontal">
                        <Rectangle Fill="Red" Width="5"/>
                        <TextBlock Text="red"
                                   FontSize="36"/>
                    </StackPanel>
                </ListViewItem>
            </ListView>
    
            <Button Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Left" VerticalContentAlignment="Top">
                <StackPanel Orientation="Horizontal">
                    <Rectangle Fill="Blue" Width="5"/>
                    <TextBlock Text="blue"/>
                </StackPanel>
            </Button>
    
            <StackPanel Orientation="Horizontal"
                        Grid.Column="2">
                <Rectangle Fill="Green" Width="5"/>
                <TextBlock Text="green"/>
            </StackPanel>
    
    
    
        </Grid>
    </Page>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   meanme    7 年前

    如果我正确理解要求,您可以使用 Border

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
    
        <Border Grid.Column="0" BorderBrush="Red" BorderThickness="5, 0, 0, 0" >
            <ListView>
                <TextBlock Text="red"/>
                <TextBlock Text="red"/>
                <TextBlock Text="red"/>
            </ListView>
        </Border>
    
        <Border Grid.Column="1" BorderBrush="Blue" BorderThickness="5, 0, 0, 0" >
            <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Left" VerticalContentAlignment="Top">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="blue"/>
                </StackPanel>
            </Button>
        </Border>
    
        <Border Grid.Column="2" BorderBrush="Green" BorderThickness="5, 0, 0, 0" >
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="green"/>
            </StackPanel>
        </Border>
    </Grid>
    

    enter image description here

    Margin s、 例如,尝试

    <ListView Margin="-10, 0, 0, 0">