【问题标题】:Stretch Slider to fit Grid/GridViewItem/GridView [C#, XAML]拉伸滑块以适应 Grid/GridViewItem/GridView [C#, XAML]
【发布时间】:2014-04-19 20:54:09
【问题描述】:

我现在真的需要你的帮助。我已经尝试了数千种解决方案,但对我没有任何帮助。这是使用 Microsoft Visual Studio 2013 for Windows 构建的页面的一部分。我想让滑块(名为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: 语言错误请见谅。我是德国人:)

【问题讨论】:

    标签: c# windows xaml gridview slider


    【解决方案1】:

    您的自动调整网格大小会给滑块缩放带来问题,因为 Auto 表示“按行内容调整大小”,而 * 表示“大小与网格成比例”。

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

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

    如果我将高度设置为 rowdefination 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 2018-08-02
      • 2015-07-20
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多