XAML: ListViewItem 中的 StackPanel/GridView 没有占用 ListViewItem 的整个 space
XAML: StackPanel/GridView in ListViewItem does not take the whole space of the ListViewItem
我遇到了问题,我的第一个红色矩形(参见图片中的第一个三分之一)没有 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>
如果我理解正确的话,你可以使用 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>
如果您想完全消除边框笔划和控件之间的 space,您可以使用 Margin
s。例如,尝试
<ListView Margin="-10, 0, 0, 0">
我遇到了问题,我的第一个红色矩形(参见图片中的第一个三分之一)没有 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>
如果我理解正确的话,你可以使用 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>
如果您想完全消除边框笔划和控件之间的 space,您可以使用 Margin
s。例如,尝试
<ListView Margin="-10, 0, 0, 0">