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

时间:2014-04-19 20:54:10

标签: c# windows xaml gridview slider

我现在真的需要你的帮助。我尝试了几千种解决方案,但没有任何方法可以帮助我。这是使用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的高度绑定到“secGrid”的ActualHeight来实现它,但这不适合我的目的,即使它似乎与转换器组合使用效果很好:

    <Slider Grid.Row="2" x:Name="slider_1" Orientation="Vertical" VerticalAlignment="center" HorizontalAlignment="center" Height="{Binding ActualHeight, ElementName=secGrid}"/>

尝试将VerticalAligment / VerticalContentAligment设置为“Stretch”,但它不起作用。 重要的是它能够响应其他屏幕解决方案。

任何人都可以帮助我吗?除了名为container_1的内部网格之外,我是否还必须使用其他类型的元素?这让我发疯了......

PS:对不起语言错误。我是德国人:)

1 个答案:

答案 0 :(得分:1)

您的自动调整大小网格会为滑块缩放产生问题,因为自动意味着&#34;大小为行内容&#34;,*表示&#34;大小与网格成比例&#34;。

自动表示行的高度与其中的元素所需的高度相同。

*大小行的高度是通过为自动和固定高度行分配空间,然后将剩余空间分开来计算的。

如果我将高度设置为rowdefination 2或者我将height设置为grid

,则

下面的代码可以正常工作

  <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>