2015-03-30 5 views
8

Wie fügt man Bildlaufleisten zu einem Raster hinzu?Hinzufügen von Bildlaufleisten zum Raster

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

Zwei Leinwände können zu hoch oder zu breit sein.

Dies ist Tile Map Editor und ich zeichne alles auf der Leinwand. In der ListView habe ich Kacheln zum Einfügen.

+1

hinzufügen 'ScrollViewer' um den Inhalt, bewegen sollte. – Alex

+0

Doppelte Frage von: http://StackOverflow.com/Q/839062 –

Antwort

12

Normalerweise können Sie das Element mit <ScrollViewer> umhüllen oder ScrollViewer.HorizontalScrollBarVisibility und ScrollViewer.VerticalScrollBarVisibility innerhalb des Elements XAML setzen. Ich setze gerne auf Auto, damit sie nur bei Bedarf angezeigt werden.

Versuchen Sie einfach, diese zu starten:

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

EDIT für weitere Hilfe! Hier ist ein Beispiel für ein besseres Layout, die Listview ist auf der linken Seite gefolgt von den beiden Canvases. Sie können diese übereinander oder haben ein anderes Layout setzen wollen, aber dies zeigt Ihnen, wie es geht:

<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

Als ich dies tat - war die vertikale Bildlaufleiste sichtbar. Die horizontale Bildlaufleiste funktionierte nicht. Die vertikale Bildlaufleiste funktionierte für beide Elemente - Canvas und ListView (Listview ist wirklich hoch). – Greggy

+0

gut, musste es scrollen? Wenn Sie möchten, legen Sie den ScrollViewer fest.HorizontalScrollBarVisibility = Visible. Wenn es ausgegraut ist, muss das Element sowieso nicht scrollen. Auto, wird es dann überhaupt nicht anzeigen. Es klingt mehr wie das ListView sein sollte, was Scrollen ist, das wird es bei Bedarf standardmäßig tun. Das Gitter scrollt nicht, wenn die Listansicht bereits scrollt, da es immer noch in das Gitter "passt". Für was sollen die Canvas-Elemente sein? –

+0

Die Leinwand, die auf Dehnung eingestellt wird, passt die Leinwand auch an den VERFÜGBAREN Rasterbereich an, so dass das Raster nicht gescrollt wird. Sie müssen Spalten und Zeilen für dieses Raster definieren und dann jede Zeichenfläche korrekt positionieren. –