Grid和StackPanel的问题 - 绑定

时间:2013-06-19 11:09:02

标签: c# wpf windows-phone-7 xaml data-binding

好的,我在ScrollViewer内使用ItemsControl(包含StackPanel)时遇到问题。

然而,事情是滚动工作:

  • 无论用户向下滚动多少,表格的底线都不可见
  • 当滚动为“已发布”时,表格会重新弹出 ...

<ScrollViewer Height="Auto">
    <ItemsControl ItemsSource="{Binding Items, Mode=TwoWay}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid VerticalAlignment="Top" Margin="0,0,0,0" x:Name="ResTable">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.10*"/>
                        <ColumnDefinition Width="0.30*" />
                        <ColumnDefinition Width="0.30*"/>
                        <ColumnDefinition Width="0.30*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Column="0" Text="{Binding [num]}" HorizontalAlignment="Center" />
                    <TextBlock Grid.Column="1" Text="{Binding [A]}" HorizontalAlignment="Center" />
                    <TextBlock Grid.Column="2" Text="{Binding [B]}" HorizontalAlignment="Center" />
                    <TextBlock Grid.Column="3" Text="{Binding [C]}" HorizontalAlignment="Center" />
                </Grid>
            </DataTemplate>

        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>

有什么想法吗?


P.S。

  • 我已经看过类似问题的其他一些答案,但似乎都没有起作用......

  • 我的主要想法是显示一个表格,带有固定标题,以及可滚动的内容(通过Bindings填充) - 好的,还有一些东西在顶部页面(除了表格之外)

1 个答案:

答案 0 :(得分:2)

我想问题是你应该使用像 Grid 这样的父元素,而不是 StackPanel ,因为 StackPanel 使用滚动条等调整子项目的大小时有其缺点。

<Grid>
<Grid.RowDefinitions>
   <RowDefinition Height="Auto"/>
   <RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!-- Put headers in Grid.Row="0" -->

<!-- Put Scrollviewer in Grid.Row="1" --> 

</Grid>

还可以从 ScrollViewer 中删除Height="Auto"属性,您可能希望使用VerticalAlignment="Stretch"项来获取所有可用空间。我希望这是你想要实现的目标。