none
Scrollviewer wird nicht aktualisiert RRS feed

  • Frage

  • Hallo zusammen,

    ich habe einen Scrollviewer und dort drin ein Image, welches ich über einen Slider größer oder kleiner mache. Das klappt auch ganz gut, nur leider wird die Scrollbar nicht aktualisiert. Was mache ich da falsch?

    <ScrollViewer Grid.Row="0" Grid.Column="1" DockPanel.Dock="Right" Margin="5,0,0,0" 
                  HorizontalScrollBarVisibility="Disabled"  VerticalScrollBarVisibility="Auto" 
                  Name="scrImage" >
        <Viewbox Stretch="Uniform" Name="viewBox1" Margin="10"   >
            <Image Name="imgTiff">
                <Image.RenderTransform>
                    <ScaleTransform  ScaleY="{Binding ElementName=Slider1, Path=Value}"
                                ScaleX="{Binding ElementName=Slider1, Path=Value}"/>
                </Image.RenderTransform>
            </Image>
        </Viewbox>
    </ScrollViewer>
    


    Gruß Enno

    Dienstag, 1. November 2011 07:21

Antworten

  • Hallo Enno,

    in Deinem Code stecken zwei Fehler.

    1. Du verwendest eine RenderTransformation. Es gibt noch eine andere Art der Transformation: die LayoutTransformation. Der Unterschied zwischen beiden besteht darin, dass die LT vor, die RT nach dem Arrangieren vorgenommen werden. Die RT vergrößert also nur die Darstellung des Images, nicht aber dessen Abmessungen. Dies macht die LT.

    2. Du verwendest eine ViewBox. Diese skaliert ihren Inhalt so, dass er in den Anzeigebereich passt. Die ViewBox hebt also die Änderungen durch die LT wieder auf.

    Mit folgendem Code (ein paar Dinge weggelassen), funktioniert es:

    <ScrollViewer
       HorizontalScrollBarVisibility="Auto"
       VerticalScrollBarVisibility="Auto">
       <Image>
          <Image.LayoutTransform>
             <ScaleTransform
                ScaleY="{Binding ElementName=Slider1, Path=Value}"
                ScaleX="{Binding ElementName=Slider1, Path=Value}" />
          </Image.LayoutTransform>
       </Image>
    </ScrollViewer>
    
    
    Gruß
    Jürgen

     


    Donnerstag, 3. November 2011 20:33

Alle Antworten

  • Hallo Enno,

    in Deinem Code stecken zwei Fehler.

    1. Du verwendest eine RenderTransformation. Es gibt noch eine andere Art der Transformation: die LayoutTransformation. Der Unterschied zwischen beiden besteht darin, dass die LT vor, die RT nach dem Arrangieren vorgenommen werden. Die RT vergrößert also nur die Darstellung des Images, nicht aber dessen Abmessungen. Dies macht die LT.

    2. Du verwendest eine ViewBox. Diese skaliert ihren Inhalt so, dass er in den Anzeigebereich passt. Die ViewBox hebt also die Änderungen durch die LT wieder auf.

    Mit folgendem Code (ein paar Dinge weggelassen), funktioniert es:

    <ScrollViewer
       HorizontalScrollBarVisibility="Auto"
       VerticalScrollBarVisibility="Auto">
       <Image>
          <Image.LayoutTransform>
             <ScaleTransform
                ScaleY="{Binding ElementName=Slider1, Path=Value}"
                ScaleX="{Binding ElementName=Slider1, Path=Value}" />
          </Image.LayoutTransform>
       </Image>
    </ScrollViewer>
    
    
    Gruß
    Jürgen

     


    Donnerstag, 3. November 2011 20:33
  • Hallo NO80,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Dienstag, 8. November 2011 12:26
    Moderator