0

Silverlight を使用して Windows Phone 7 でアプリケーションを作成しています。

スクロールバーをグリッドコンポーネントに追加しようとして3時間ほど費やしたので、コードに多くのものを動的に追加すると、下にスクロールして表示できました。

私の XAML は次のようになります。

<Grid x:Name="LayoutRoot" Background="Transparent">
    <ScrollViewer VerticalScrollBarVisibility="Visible" Name="Scrolling">
        <ScrollViewer.Content>
          <Grid x:Name="myGrid" HorizontalAlignment="Left" Width="650" VerticalAlignment="Top" Height =" 300" Background="Red" Grid.Row="1"  Margin="12,108,0,0"/>
        </ScrollViewer.Content>
    </ScrollViewer>

    <Grid Grid.Row="1" Height="79" HorizontalAlignment="Left" Margin="0,405,0,0" Name="grid1" VerticalAlignment="Top" Width="728"> <!-- Not important -->
    </Grid>

    <Grid Grid.Row="1" Height="73" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid2" VerticalAlignment="Top" Width="704">  <!-- Not important -->
    </Grid>
</Grid>

そして、コードで:

myGrid.Children.Add(some_component);

私は多くの方法を試しましたが、どれも機能していません。誰でも助けることができますか?

4

2 に答える 2

2

レイアウトが少し奇妙に見えるので、これを試しましたか

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid> 
        ...Static content here
    </Grid>
    <ScrollViewer VerticalScrollBarVisibility="Visible" Grid.Row="1">
        ...Content that scales here
    </ScrollViewer>
    <Grid Grid.Row="2"> 
        ...Static content here
    </Grid>
</Grid>

これで問題なく動作するはずです。グリッドの仕組みを理解するのに役立ちます。また、ほとんどのレイアウトはマージンを使用せずに移動できることにも注意してください。デバイスと解像度の性質上、マージンを使用してレイアウトを行うことはお勧めできません。アプリは常に適切にスケーリングする必要があります。スケーリングしないと、人々はうんざりします

グリッドには、自動 (「auto」)、絶対 (「300」)、塗りつぶし (「*」) の 3 つの列/行モードがあります。

自動- グリッド セルは、その中のコンテンツに合わせてのみスケーリングされます

絶対- グリッド セルは指定したサイズです

塗りつぶし- グリッド セルは、自動/絶対の他のセルが計算された後、塗りつぶすように設定されている他のセルに比例して、残りのすべてのスペースを塗りつぶします。

「2*」、「3*」などを使用して相対的な「塗りつぶし」を指定することもできます

それで:

<Grid.RowDefinitions>
    <RowDefinition Height="100" />
    <RowDefinition Height="*" />
    <RowDefinition Height="2*" />
    <RowDefinition Height="3*" />
</Grid.RowDefinitions>

最初の行の高さは 100 ピクセル、3 行目は 2 行目の高さの 2 倍、4 行目は 2 行目の高さの 3 倍の 4 行になります。これらの最後の 3 行は、残りのすべてのスペースを埋めます。

また、グリッド "*" が親コンテナーを埋めることにも注意してください。これは、アプリケーションの残りのスペースを埋めるのに役立ちます。

于 2012-07-01T10:58:01.767 に答える
0

まず、 andもGrid更新する必要があるため、 に物事を動的に簡単に追加することはできません。これらの定義を指定しない場合、子はその場でスタックされます。RowDefinitionsColumnDefinitions

StackPanel代わりにorを使用してみてくださいWrapPanel。子が十分なスペースを占めるとすぐにスクロールバーが表示されます。

于 2012-06-30T11:51:28.413 に答える