2016-03-28 6 views
4

Ich habe eine Leinwand, die sich hinter von Code erzeugten Bilder werden und die meine XAML wie unter Bildlaufleisten mit Ein- und Auszoomen auf XAML Leinwand

<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" > 
    <WrapPanel > 
     <Grid ScrollViewer.HorizontalScrollBarVisibility="Visible" > 
      <Grid.RowDefinitions> 
       <RowDefinition Height="25" /> 
       <RowDefinition Height="20" /> 
       <RowDefinition Height="*" /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="350"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 

      <Menu x:Name="menu1" Grid.Row="0" BorderBrush="AliceBlue" VerticalAlignment="Top" FontFamily="Comic Sans MS" DockPanel.Dock="Top" RenderTransformOrigin="0.48,3.04" > 
       <MenuItem Header="_File" Width="92" FontSize="16" FontWeight="Normal" FontFamily="Century Gothic" > 

        <MenuItem Header="_Print"/> 
        <MenuItem Header="_Print Preview"/> 
        <MenuItem Header="_Exit"/> 

       </MenuItem> 
      </Menu> 

      <ToolBar x:Name="toolBar1" Grid.Row="1" Grid.RowSpan="2" BorderBrush="Red" BorderThickness="3" Margin="0,0,0,900" Height="30" VerticalAlignment="Top" DockPanel.Dock="Top" > 
       <Button x:Name="Zoomin" Click="menuItemZoomin_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" Height="55" RenderTransformOrigin ="0.917,0.587" IsHitTestVisible="True" IsEnabled="True" FontFamily="Century Gothic" Content="Zoom In" /> 
       <Button x:Name="Zoomout" Click="menuItemZoomout_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Zoom Out"/> 
       <!--<Button x:Name="Print" Click="PrintBtn_Click" HorizontalAlignment="Left" Margin="1" Width="90" FontSize="16" FontWeight="SemiBold" RenderTransformOrigin="0.917,0.587" Height="55" FontFamily="Century Gothic" Content="Print"/>--> 
      </ToolBar> 



      <Canvas x:Name="cvsWarehouse" Grid.Row="1" Focusable="True" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible" MouseWheel="Canvas_MouseWheel" RenderTransformOrigin="0.5,0.5" Margin="15,144,122,151" Grid.ColumnSpan="2" > 
       <Canvas.LayoutTransform> 
        <TransformGroup> 
         <ScaleTransform x:Name ="st1" ScaleX="{Binding Value, ElementName=uiScaleSlider}" 
          ScaleY="{Binding Value, ElementName=uiScaleSlider}" /> 
         <TranslateTransform Y="100" /> 
        </TransformGroup> 

       </Canvas.LayoutTransform> 
      </Canvas> 
     </Grid> 
    </WrapPanel> 

cvsWarehouse sieht ist die eigentliche Leinwand, auf der viel Code hinter den Arbeiten bei der Erzeugung der Bilder läuft und das Ausgabefenster wie folgt aussieht. Scrollbar showing only half

Wenn es maximiert ist, werden die Bildlaufleisten nicht angezeigt. Ich habe wie verrückt gegoogelt und alles versucht, was ich kann, aber ich konnte das Problem nicht lösen. Ich möchte bis zum Ende der Leinwand scrollen. Es gibt auch mehr Bilder, aber Wrappanel oder Layout-Transformation nichts hat hier funktioniert. Dies hat auch Zoom-in und out, aber es zeigt mir noch keine Bildlaufleisten. Hier

Maximized but still content is there below but no scrollbars ist, was ich meine, wenn ich sage Inhalt ist immer noch da unten

Such a huge canvas

Wie diese Scrollbar durch aus sichtbar zu machen. Wie zoomen hinein oder heraus oder minimiert oder maximiert

+0

wow ... Jetzt sehe ich XAML ist wirklich Schmerzen im Nacken. Ich sehe niemanden, der eine Lösung für dieses Problem hat. Es ist alles über das Internet, aber noch keine richtige Lösung. –

+0

Wirklich ... immer noch keine Lösung. WPF mischt mich wirklich –

+0

Kann jemand bitte das Problem betrachten? Ich suche nach einer Lösung dafür, keine Punkte für die Frage. Bitte versuche es zu verstehen. Es war eine Woche und nichts hat sich mit diesem Problem bewegt –

Antwort

0

Ich hatte ein ähnliches Problem und ich fand die erste Antwort für diese Frage hilfreich - (LayoutTransform on certain elements in canvas?). Wenden Sie den ScrollViewer auf Ihre Arbeitsfläche an (das Element, auf das die Layout-Transformation angewendet wurde). Die Größenänderung der Zeichenfläche muss vom Scrollviewer erkannt werden, damit die Bildlaufleiste angezeigt wird. Ich glaube auch nicht, dass Sie diese innerhalb des Canvas-Tags benötigen - ScrollViewer.CanContentScroll = "True" ScrollViewer.HorizontalScrollBarVisibility = "Sichtbar" ScrollViewer.VerticalScrollBarVisibility = "Sichtbar". Diese im ScrollViewer-Tag enthaltenen Definitionen sollten die gewünschte Funktionalität wiedergeben.