2015-03-30 27 views
8

如何將滾動條添加到網格中?如何將滾動條添加到網格中

<Grid> 
     <Menu Height="23" Name="menu1" VerticalAlignment="Top"> 
      <MenuItem Header="File"> 
       <MenuItem Command="ApplicationCommands.New" Header="New" /> 
       <MenuItem Command="ApplicationCommands.Save" Header="Save" /> 
       <MenuItem Command="ApplicationCommands.Open" Header="Open" /> 
       <MenuItem Command="ApplicationCommands.Close" Header="Exit" /> 
      </MenuItem> 
      <MenuItem Header="Stuff"> 
       <MenuItem Header="Properties" Command="Properties"/> 
       <MenuItem Header="Tileset" Command="Replace"/> 
      </MenuItem> 
     </Menu> 
     <Grid Margin="0,24,0,0"> 
      <Canvas HorizontalAlignment="Stretch" Name="canvas1" VerticalAlignment="Stretch" MouseMove="MoveMouse" MouseDown="PressDownMouse" MouseUp="canvas2_MouseLeftButtonUp" MouseWheel="canvas1_MouseWheel"/> 
      <Canvas HorizontalAlignment="Stretch" Name="canvas2" VerticalAlignment="Stretch" MouseMove="MoveMouse" MouseDown="PressDownMouse" MouseUp="canvas2_MouseLeftButtonUp" MouseWheel="canvas1_MouseWheel"/> 
      <ListView HorizontalAlignment="Left" Name="listView1" Width="203" VerticalAlignment="Stretch" SelectionChanged="listView1_SelectionChanged"> 
      </ListView> 
     </Grid> 
    </Grid> 

兩個畫布可能太高或太寬。

這是瓷磚地圖編輯器,我畫布上的一切。在ListView我有瓷磚插入。

+1

在應該滾動的內容周圍添加一個'ScrollViewer'。 – Alex 2015-03-30 19:47:15

+0

重複的問題:http://stackoverflow.com/q/839062 – 2016-05-02 05:53:27

回答

12

通常,您可以在元素的XAML中使用<ScrollViewer>或設置ScrollViewer.HorizontalScrollBarVisibilityScrollViewer.VerticalScrollBarVisibility來包裝元素。我喜歡設置爲Auto,以便它們僅在需要時顯示。

剛剛嘗試這個啓動:

<ScrollViewer> 
    <Grid> 
    // some code 
    </Grid> 
</ScrollViewer> 

編輯以獲得更多幫助!這裏有一個更好的佈局的例子,列表視圖在左邊,然後是兩個畫布。你可能想把這些放在彼此的上面或者有不同的佈局,但是這會告訴你如何去做:

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

    <Menu Name="menu1" > 
     <MenuItem Header="File"> 
      <MenuItem Command="ApplicationCommands.New" Header="New" /> 
      <MenuItem Command="ApplicationCommands.Save" Header="Save" /> 
      <MenuItem Command="ApplicationCommands.Open" Header="Open" /> 
      <MenuItem Command="ApplicationCommands.Close" Header="Exit" /> 
     </MenuItem> 
     <MenuItem Header="Stuff"> 
      <MenuItem Header="Properties" Command="Properties"/> 
      <MenuItem Header="Tileset" Command="Replace"/> 
     </MenuItem> 
    </Menu> 
    <Grid Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <ListView /> 
     <Canvas Grid.Column="1"/> 
     <Canvas Grid.Column="2"/> 
    </Grid> 
</Grid> 
+0

當我這樣做 - 垂直滾動條是可見的。但水平滾動條不起作用。 垂直滾動條爲兩個元素 - 帆布和ListView(列表視圖非常高)工作。 – Greggy 2015-03-30 20:01:44

+0

它是否需要滾動?如果你想,設置ScrollViewer.Horizo​​ntalScrollBarVisibility =可見。如果灰顯,元素無需滾動。汽車,它不會顯示。這聽起來更像是ListView應該是滾動的,默認情況下它會在需要的時候使用。如果列表視圖已經滾動,網格將不會滾動,因爲它仍然會「適合」網格。什麼是帆布元素應該是爲了? – 2015-03-30 20:11:02

+0

設置爲Stretch的畫布也使畫布適合AVAILABLE網格區域,因此網格不會滾動,聽起來像需要爲此網格定義一些列和行,然後將每個畫布正確放置在其中。 – 2015-03-30 20:14:00