scrollviewer不工作

时间:2012-06-21 14:24:23

标签: windows-phone-7 xaml

我的滚动查看器不滚动直到结束。它被击中到一个有限的位置。 我附加了我的xaml code.i在代码中放置了一个画布。而scrollviewer在2个网格内。

<ScrollViewer>
    <Canvas Margin="0,0,0,0">
        <toolkit:ListPicker x:Name="listPicker"  ItemTemplate="{StaticResource PickerItemTemplate}" 
                    FullModeItemTemplate="{StaticResource PickerFullModeItemTemplate}"  CacheMode="BitmapCache"
                    Header="" Margin="12,246,210,298" FontFamily="Yu Gothic" FontSize="22" FontWeight="SemiBold" Width="240" />

        <toolkit:ListPicker x:Name="listPicker2"  ItemTemplate="{StaticResource PickerItemTemplate}" ItemCountThreshold="3"
                    FullModeItemTemplate="{StaticResource PickerFullModeItemTemplate}"  CacheMode="BitmapCache"
                    Header=""  Margin="9,343,210,206" Width="240" />
        <toolkit:ListPicker CacheMode="BitmapCache" FullModeItemTemplate="{StaticResource PickerFullModeItemTemplate}" Header="" ItemCountThreshold="3" ItemTemplate="{StaticResource PickerItemTemplate}" Margin="12,440,210,108" Name="listPicker1" Width="240" />
        <toolkit:ListPicker CacheMode="BitmapCache" FullModeItemTemplate="{StaticResource PickerFullModeItemTemplate}" Header="" ItemCountThreshold="3" ItemTemplate="{StaticResource PickerItemTemplate}" Margin="11,546,210,2" Name="listPicker3" Width="240" />

        <TextBlock Height="40" HorizontalAlignment="Left" Margin="30,212,0,0" Name="textBlock1" Text="MONTHLY DEBTS" VerticalAlignment="Top" Width="185" FontSize="24" />
        <TextBlock Height="40" HorizontalAlignment="Left" Margin="290,212,0,0" Name="textBlock2" Text="AMOUNTS" VerticalAlignment="Top" Width="147" FontSize="24" />

        <clrtb:ClearableTextBox Canvas.Left="246" Canvas.Top="242" Height="75" Name="qualifytb" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="242" Canvas.Top="338" Height="75" Name="clearableTextBox1" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="246" Canvas.Top="436" Height="75" Name="clearableTextBox2" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="244" Canvas.Top="542" Height="75" Name="clearableTextBox3" Width="208" />
        <TextBlock Text="DEBT RATIO" Canvas.Left="148" Canvas.Top="642" FontSize="26" FontWeight="Medium" />
        <TextBlock Text="Conv Debt Ratio:" Canvas.Left="30" Canvas.Top="700" FontSize="26" FontWeight="Medium" />
        <TextBlock Text="FHA Debt Ratio:" Canvas.Left="30" Canvas.Top="800" FontSize="26" FontWeight="Medium" />
        <TextBlock Text="VA Debt Ratio:" Canvas.Left="30" Canvas.Top="900" FontSize="26" FontWeight="Medium" />
        <clrtb:ClearableTextBox Canvas.Left="250" Canvas.Top="700" Height="75" Name="rt1" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="320" Canvas.Top="700" Height="75" Name="rt2" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="250" Canvas.Top="800" Height="75" Name="rt3" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="320" Canvas.Top="800" Height="75" Name="rt4" Width="208" />
        <clrtb:ClearableTextBox Canvas.Left="250" Canvas.Top="900" Height="75" Name="rt5" Width="208" />
    </Canvas>
</ScrollViewer>

2 个答案:

答案 0 :(得分:1)

我发现了这个问题:ScrollBars are not visible after changing positions of controls inside a Canvas,这基本上是一个类似的问题。问题是WPF特定的,但也可以应用于WP / Silverlight。

问题是Canvas将始终返回{0}的DesiredSize,因此ScrollViewer永远不会认为它需要滚动。

解决方案很简单:只需使用StackPanelGrid代替Canvas。如果你真的需要Canvas,你必须覆盖MeasureOverride

答案 1 :(得分:0)

Canvas不是正确使用的布局面板,它会以您使用它的方式产生奇怪的行为。它意味着在需要对定位进行有限控制时使用,并且您愿意编写重要的逻辑来支持弹出的边缘情况。尝试使用Grid,并使用列和行对其进行配置。