拉伸滑块以适应Grid/GridViewItem/GridView[C#,XAML]
本文关键字:GridView GridViewItem XAML Grid | 更新日期: 2023-09-27 17:59:00
我现在真的需要你的帮助。我尝试过几千种解决方案,但都不起作用。这是用Microsoft Visual Studio 2013 for Windows构建的页面的一部分。我想让Slider(名为Slider_1)做出响应,所以它应该填充页面的其余部分,而不考虑屏幕解决方案(不能使用固定高度):
<Grid Style="{StaticResource LayoutRootStyle}">
<Grid.RowDefinitions>
<RowDefinition Height="140"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Back button and page title -->
<Grid Grid.Row="0">
.........
</Grid>
<Grid Grid.Row="1" Name="secGrid">
<GridView x:Name="source">
<GridViewItem x:Name="item_1">
<Grid x:Name="container_1">
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" x:Name="name_1" Height="39" Text="123"></TextBlock>
<Button Grid.Row="1" x:Name="toggle_on_1" Content="ON"></Button>
<Slider Grid.Row="2" x:Name="slider_1" Orientation="Vertical" VerticalAlignment="center" HorizontalAlignment="center"/>
<Button Grid.Row="3" x:Name="toggle_off_1" Height="39" Content="OFF"></Button>
</Grid>
</GridViewItem>
</GridView>
</Grid>
我以为我可以通过将Slider的Height绑定到"secGrid"的ActualHeight来实现它,但这不适合我的目的,即使它与转换器结合使用似乎很好:
<Slider Grid.Row="2" x:Name="slider_1" Orientation="Vertical" VerticalAlignment="center" HorizontalAlignment="center" Height="{Binding ActualHeight, ElementName=secGrid}"/>
尝试将VerticalAliment/VoluticalContentAliment设置为"拉伸",但不起作用。它对其他屏幕解决方案的响应非常重要。
有人能帮我吗?除了名为container_1的内部网格之外,我还必须使用另一种类型的Element吗?这把我逼疯了。。。。
附言:很抱歉在语言上有错误。我是德国人:)
您的自动调整网格大小会给滑块缩放带来问题,因为Auto表示"按行内容调整大小",*表示"与网格成比例的大小"。
自动意味着一行的高度与其中的元素所需的高度一样多
*大小行的高度是通过为自动行和固定高度行分配空间,然后除以剩余空间来计算的
如果我将高度设置为行定义2或将高度设置成网格,下面的代码可以正常工作
<Grid>
<GridView x:Name="source">
<GridViewItem x:Name="item_1" >
<Grid x:Name="container_1">
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" x:Name="name_1" Height="39" Text="123"></TextBlock>
<Button Grid.Row="1" x:Name="toggle_on_1" Content="ON"></Button>
<Slider Grid.Row="2" x:Name="slider_1" Orientation="Vertical" HorizontalAlignment="center"/>
<Button Grid.Row="3" x:Name="toggle_off_1" Height="39" Content="OFF"></Button>
</Grid>
</GridViewItem>
</GridView>
</Grid>