2015-03-30 13 views
8

Come si aggiungono barre di scorrimento a una griglia?Come aggiungere barre di scorrimento a griglia

<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> 

Due tele potrebbero essere troppo alte o troppo larghe.

Questo è Tile Map Editor e disegno tutto su tela. Nel ListView ho le piastrelle da inserire.

+1

Aggiungere un 'ScrollViewer' intorno al contenuto che deve scorrere. – Alex

+0

Duplicazione della domanda di: http://stackoverflow.com/q/839062 –

risposta

12

In genere è possibile avvolgere l'elemento con <ScrollViewer> o impostare ScrollViewer.HorizontalScrollBarVisibility e ScrollViewer.VerticalScrollBarVisibility all'interno dell'XAML dell'elemento. Mi piace impostare su Auto, in modo che vengano visualizzati solo quando necessario.

Basta provare questo per iniziare:

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

EDIT per ulteriori informazioni! Ecco un esempio di un layout migliore, la listview è sulla sinistra seguita dalle due tele. Si consiglia di mettere questi sopra l'altro o avere un layout diverso, ma questo vi mostrerà come farlo:

<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

Quando ho fatto questo - la barra di scorrimento verticale era visibile. Ma la barra di scorrimento orizzontale non funzionava. La barra di scorrimento verticale funzionava per entrambi gli elementi: canvas e ListView (Listview è molto alto). – Greggy

+0

bene è stato necessario scorrere? se lo desideri, imposta ScrollViewer.HorizontalScrollBarVisibility = Visible. Se è disattivato, l'elemento non ha bisogno di scorrere comunque. Auto, non verrà mostrato affatto. Sembra più che il ListView debba essere quello che sta scorrendo, che di default sarà se necessario. la griglia non scorrerà se il listview scorre già, poiché sarà ancora "adatto" alla griglia. A cosa servono gli elementi Canvas? –

+0

il canvas impostato su Stretch sta anche facendo in modo che il canvas si adatti all'area della griglia DISPONIBILE, quindi la griglia non scorrerà, sembra che sia necessario definire alcune colonne e righe per questa griglia, quindi posizionare correttamente ciascuna tela in esso. –