0

Ich habe Probleme, eine horizontale Bildlaufleiste für einen WPF Scroll Viewer anzuzeigen. Das ScrollViewer enthält ein Benutzersteuerelement, das seinen Inhalt basierend auf einem Eingabeobjekt dynamisch darstellt, so dass es eine variable Größe haben kann. Wenn es sich selbst rendert, legt es die Breite und Höhe des Benutzersteuerelements auf die richtige Größe fest.Horizontale Bildlaufleiste für WPF ScrollViewer wurde nie angezeigt

Ich habe HorizontalScrollBarVisibility auf sichtbar gesetzt, was es zwingen sollte, immer angezeigt zu werden, aber es wird nie angezeigt. Ich habe auch versucht mit dem Aktivieren/Deaktivieren CanContentScroll zu spielen, aber es scheint keinen Unterschied zu machen.

Vertikale Bildlaufleisten funktionieren ohne Probleme.

   ScrollViewer scroll = new ScrollViewer(); 
       scroll.HorizontalContentAlignment = HorizontalAlignment.Left; 
       scroll.VerticalContentAlignment = VerticalAlignment.Top; 
       scroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; 
       scroll.CanContentScroll = true; 
       Grid.SetRow(scroll, 1); 

       GalaxyViewer viewer = new GalaxyViewer(g); 
       viewer.HorizontalAlignment = HorizontalAlignment.Left; 
       viewer.VerticalAlignment = VerticalAlignment.Top; 
       viewer.HideShips(); 
       viewer.IsEditable = this.IsEditable; 
       viewer.GalaxyEdited += this._galaxyEditedHandler; 
       if (this._activePlayer > 0 && !this.IsEditable) viewer.ShowShipsForPlayer(this._activePlayer); 
       scroll.Content = viewer; 
       ScrollViewer.SetCanContentScroll(viewer, true); 
       ScrollViewer.SetHorizontalScrollBarVisibility(viewer, ScrollBarVisibility.Visible); 

       scroll.UpdateLayout(); 
       grid.Children.Add(scroll); 

Wer hat irgendwelche Ideen/Lösungen dafür?

+0

Interessanterweise ist die horizontale Bildlaufleiste erscheint nur, wenn ich das Formular maximieren – RobV

Antwort

0

die Ursache des Problems gefunden - der Bildlaufleiste angezeigt wurde, aber ich wurde automatisch die Steuer Ändern der Größe der Scoll Betrachter als die Fenstergröße verändert wurde enthält, und das bedeutete, dass die horizontale Scroll-Leiste wurde von der Anzeige

abgeschnitten werden
+0

Können Sie beschreiben Ihre Lösung mit mehr Einzelheiten? Vielen Dank –

1
WPF Layout Controls - ScrollViewer 

Die meiste Zeit wissen wir nicht über die Größe der Steuerung, die in Geröll angezeigt wird. Es ist auch möglich, die Auflösung des Produkts abhängig zu machen, da dies die Grundeigenschaft von wpf ist. Deshalb gibt es in WPF ein Steuerelement, z. B. ScrollViewer (Attached-Eigenschaft), das das Scrollen dieser Inhalte ermöglicht, wenn der Inhalt in den Anzeigebereich wechselt.

<ScrollViewer HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
     <Grid ScrollViewer.HorizontalScrollBarVisibility="Visible"> 
      <Grid RenderTransformOrigin="0.555,0.491"> 
       <Grid.RowDefinitions> 

        <RowDefinition Height="auto"></RowDefinition> 
        <RowDefinition Height="auto"></RowDefinition> 
        <RowDefinition Height="auto"></RowDefinition> 
        <RowDefinition Height="auto"></RowDefinition> 

       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
        <ColumnDefinition ></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
    </Grid> 
    </ScrollViewer> 


Above example is a implementation of horizontal and vertical scrollbar in a wpf form. 

Automatische vertikale Bildlaufleiste in WPF TextBlock?

Für Details besuchen Sie bitte: http://wpfbugs.blogspot.in/2014/02/wpf-layout-controls-scrollviewer.html