5

以下の例では、利用可能なスペースを ScrollViewer で埋めることができません。上記の動的コンテンツのために高さは不明ですが、オーバーランする代わりに利用可能なスペースを埋める方法はありませんか?

   <Grid x:Name="Main" Height="200" MaxHeight="200">
      <StackPanel>
         <Grid x:Name="MainContent" Height="170" MaxHeight="170">
            <StackPanel>
               <TextBlock FontSize="24" Text="Dynamic data "/>
               <TextBlock FontSize="24" Text="height "/>
               <TextBlock FontSize="24" Text="unknown... "/>
               <Grid x:Name="Results" Background="Red">
                  <ScrollViewer>
                     <StackPanel>
                        <TextBlock FontSize="24" Text="Result set... 0"/>
                        <TextBlock FontSize="24" Text="Result set... 1"/>
                        <TextBlock FontSize="24" Text="Result set... 2"/>
                        <TextBlock FontSize="24" Text="Result set... 3"/>
                     </StackPanel>
                  </ScrollViewer>
               </Grid>
            </StackPanel>
         </Grid>
         <Grid x:Name="Nav">
            <Button HorizontalAlignment="Left" Content="Back"/>
            <Button HorizontalAlignment="Right" Content="Forward"/>
         </Grid>
      </StackPanel>
   </Grid>
4

3 に答える 3

8

withの代わりにMainContent Grid使用すると、次のようになります。DockPanelStackPanelLastChildFill=True

<Grid x:Name="MainContent" Height="170" MaxHeight="170">
    <DockPanel LastChildFill="True">
        <TextBlock DockPanel.Dock="Top" FontSize="24" Text="Dynamic data "/>
        <TextBlock DockPanel.Dock="Top" FontSize="24" Text="height "/>
        <TextBlock DockPanel.Dock="Top" FontSize="24" Text="unknown... "/>
        <Grid x:Name="Results" Background="Red">
            <ScrollViewer>
                <StackPanel>
                    <TextBlock FontSize="24" Text="Result set... 0"/>
                    <TextBlock FontSize="24" Text="Result set... 1"/>
                    <TextBlock FontSize="24" Text="Result set... 2"/>
                    <TextBlock FontSize="24" Text="Result set... 3"/>
                </StackPanel>
            </ScrollViewer>
        </Grid>               
    </DockPanel>
</Grid>

の最後の要素はDockPanel、使用可能なスペースに合わせて調整されます

于 2013-06-04T14:35:51.080 に答える
0

Scrollviewer の Height をバインドする別の要素を追加して解決しました。

<grid Grid.row="3" x:Name="Mirror">
</grid>
<ScrollViewer Grid.row="3" Height="{Binding ElementName=uxMirror,XPath=ActualHeight}">
</ScrollViewer>
于 2016-05-17T02:55:07.850 に答える
-1

まず、レイアウトがめちゃくちゃです。なぜ a を aStackPanelの唯一の子にする必要があるのですかGrid。行のために?使用RowDefinitionsColumnDefinitions取り扱い時Grid

あなたのレイアウトについての私の理解から、 aGridと aだけで必要なことはほとんどすべて行うことができますDockPanel。レイアウト コンテナーを扱うときは、可能な限り「効率的に」「最小」の数のコンテナーでレイアウトを取得することを目指します。実際のパフォーマンス上の利点ではない場合でも、他の誰かのコードを調べて冗長なネストを行わないようにする場合に非常に役立ちます

<Grid x:Name="Main">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>
  <TextBlock Grid.Row="0"
              FontSize="24"
              Text="Dynamic data " />
  <TextBlock Grid.Row="1"
              FontSize="24"
              Text="height " />
  <TextBlock Grid.Row="2"
              FontSize="24"
              Text="unknown... " />
  <ScrollViewer Grid.Row="3"
                Background="Red">
    <StackPanel>
      <TextBlock FontSize="24"
                  Text="Result set... 0" />
      <TextBlock FontSize="24"
                  Text="Result set... 1" />
      <TextBlock FontSize="24"
                  Text="Result set... 2" />
      <TextBlock FontSize="24"
                  Text="Result set... 3" />
    </StackPanel>
  </ScrollViewer>
  <DockPanel x:Name="Nav"
              Grid.Row="4"
              LastChildFill="False">
    <Button Content="Back"
            DockPanel.Dock="Left" />
    <Button Content="Forward"
            DockPanel.Dock="Right" />
  </DockPanel>
</Grid>

これにより、探しているものすべてが得られるはずです。Height静的な値でディメンションを制限する必要がある場合は、必要に応じて追加してください。

"Nav"DockPanelに関しては、はい、使用しての位置を左右にHorizontalAlignment取得し、それによって を使用できませんが、それはセル内に「1 つの」アイテムを保持しようとする概念に反するため、使用法に反します。ButtonDockPanelGridDockPanel

于 2013-06-04T15:17:46.817 に答える