拉伸滑块以适应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吗?这把我逼疯了。。。。

附言:很抱歉在语言上有错误。我是德国人:)

拉伸滑块以适应Grid/GridViewItem/GridView[C#,XAML]

您的自动调整网格大小会给滑块缩放带来问题,因为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>