none
ScrollBar in DataGrid wird nicht angezeigt???

    Frage

  • Hallo,

    kann jemand mir vielleicht bitte sagen, warum bei dem Beispiel der ScrollBar nicht angezeigt wird?

    <StackPanel>                
    	<StackPanel Orientation="Horizontal">
    		<sdk:DataGrid HorizontalAlignment="Left" x:Name="dataGrid1" VerticalAlignment="Top" Width="Auto" Height="Auto"
            	     Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                         IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                         VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow1" />
                
                
                   <sdk:DataGrid HorizontalAlignment="Left" x:Name="dataGrid" VerticalAlignment="Top" Width="Auto" Height="Auto"
                       Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                       IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                       VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow" />
    
       	</StackPanel>
    
        	<Button x:Name="CancelButton" Content="Beenden" Click="CancelButton_Click" Width="Auto" Height="Auto" HorizontalAlignment="Stretch" 
                    Margin="10,12,10,12" Grid.Row="1" BorderBrush="Gray" BorderThickness="1" />
    </StackPanel>

    und aber bei dem Beispiel doch?

    <StackPanel>
    	<sdk:DataGrid HorizontalAlignment="Left" x:Name="dataGrid" VerticalAlignment="Top" Width="Auto" Height="Auto"
                   Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                   IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                   VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow" />
    
    	<Button x:Name="CancelButton" Content="Beenden" Click="CancelButton_Click" Width="Auto" Height="Auto" HorizontalAlignment="Stretch" 
                    Margin="10,12,10,12" Grid.Row="1" BorderBrush="Gray" BorderThickness="1" />
    </StackPanel>


    Gruesse, NUNUI



    • Bearbeitet Nunui Samstag, 14. Mai 2016 05:28
    Samstag, 14. Mai 2016 05:25

Antworten

Alle Antworten

  • Hallo,

    das Problem ist das bzw. die StackPanel. StackPanels geben bei der Größenberechnung an, dass der Inhalt beliebig groß sein kann. Alles was über dem sichtbaren Bereich liegt wird daher einfach weg geschnitten. Grid's dagegen haben für den Inhalt eine feste Größe weswegen hier das jeweilige DG die ScrollBars anzeigen würde.

    Also entweder du entfernst die StackPanels und tauschst sie gegen ein Grid o.ä. aus. (Achtung, bei Grid würde der Button immer Sichtbar sein und nur das DG die ScrollBars haben, bei StackPanels kannd er Button auch aus dem Bild geschoben werden.)

    Oder aber du packst einen neuen ScrollViewer um das äußere StackPanel und stellst dort ein wie der Inhalt der aus dem Bild ragt gescrollt werden kann.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort vorgeschlagen Mathias Liefke Samstag, 14. Mai 2016 19:54
    • Als Antwort markiert Nunui Montag, 16. Mai 2016 08:55
    Samstag, 14. Mai 2016 13:47
  • Danke für die Antwort.

    Ich möchte eigentlich dass der erste DG fest angezeigt wird und nur der zweite DG einen Scrollbar hat, dass damit der Inhalt rechts und links verschoben werden kann.

    Und das bekomme ich leider nicht hin :o(


    Gruesse, NUNUI


    • Bearbeitet Nunui Samstag, 14. Mai 2016 20:05
    Samstag, 14. Mai 2016 20:04
  • Was meinst du mit "fest angezeigt"? Du musst erstmal genau definieren wann was einen Scrollbar anzeigen soll.

    Wenn ich raten müsste würde ich sagen dass du besser ein Grid mit Row bzw. Columns einsetzen solltest.

    Wie gesagt, die horizontale Scrollbar verschwindet, da das horizontale StackPanel seinem Inhalt "vorspielt" das genügend Platz da sei. Entsprechend musst du dir hier mit ScrollViewer behelfen.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Samstag, 14. Mai 2016 20:34
  • kannst Du mir vielleicht bitte sagen, wie ich den ScrollViewer definieren soll, damit nur beim zweiten DG der horizontalen Scrollbar angezeigt wird?

    <StackPanel>                
    	<Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
    		<sdk:DataGrid HorizontalAlignment="Left" x:Name="dataGrid1" VerticalAlignment="Top" Width="Auto" Height="Auto"
            	     Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                         IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                         VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow1" />
                
                
                   <sdk:DataGrid HorizontalAlignment="Left" x:Name="dataGrid" VerticalAlignment="Top" Width="Auto" Height="Auto"
                       Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                       IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                       VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow" />
    
       	</Grid>
    
        	<Button x:Name="CancelButton" Content="Beenden" Click="CancelButton_Click" Width="Auto" Height="Auto" HorizontalAlignment="Stretch" 
                    Margin="10,12,10,12" Grid.Row="1" BorderBrush="Gray" BorderThickness="1" />
    </StackPanel>


    Gruesse, NUNUI


    • Bearbeitet Nunui Samstag, 14. Mai 2016 22:01
    Samstag, 14. Mai 2016 22:00
  • Ich weiß noch immer nicht was du willst. Nach dem was du bisher verraten hast brauchst du gar keinen ScrollViewer, da das DG schon selbst einen im Template integriert.

    Aber was ist, wenn das 1. DG zu Breit für die Anzeige wird? Dann ist das 2. gar nicht mehr sichtbar oder soll das 2. stets eine feste Breite haben?

    Du kannst auch gerne eine Skizze machen um dein Konzept zu erklären. Aber es muss exakt sein und jedes der unzähligen Größenverhältnisse abdecken.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Samstag, 14. Mai 2016 22:10
  • Ich möchte mich erstmal bei Dir für die Mühe und Dein Geduld bedanken :o)

    Erste DG soll nur die Namen von den Benutzer anzeigen und daher kann nicht passieren, dass es so Breit wird damit 2. GD nicht mehr angezeigt werden kann. Und der zweite DG beinhaltet die Einträge von den Diensten für das ganze Monat vom jeweiligen Benutzer. Und deswegen auch der horizontale Scrollbar und die beide DG's sollen nebeneinander angezeigt werden.

    Hoffe, dass ich mein Vorhaben einigermassen verständlich erklären könnte!


    Gruesse, NUNUI

    Samstag, 14. Mai 2016 22:24
  • Hi,

    jetzt klappt es :o)

    Es lag daran, dass ich bei bei den zweiten ColumnDefinition den Wert Width auf Auto gesetzt hatte und somit wurde auch den Scrollbar nicht angezeigt und das habe ich jetzt entfernt und es funktioniert so wie ich es will :o)

    Und Danke für die Hinweise!


      <StackPanel>                
    	<Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
    		<sdk:DataGrid HorizontalAlignment="Left" Grid.Column="0" x:Name="dataGrid1" VerticalAlignment="Top" Width="Auto" Height="Auto"
            	     Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                         IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                         VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow1" />
                
                
                    <sdk:DataGrid HorizontalAlignment="Left" Grid.Column="1" x:Name="dataGrid" VerticalAlignment="Top" Width="Auto" Height="Auto"
                         Margin="10,10,10,0" GridLinesVisibility="All" HeadersVisibility="All"
                         IsReadOnly="True" CanUserSortColumns = "False" HorizontalScrollBarVisibility="Auto"
                         VerticalScrollBarVisibility="Auto" LoadingRow="dataGrid_LoadingRow" />
       	</Grid>
    
        	<Button x:Name="CancelButton" Content="Beenden" Click="CancelButton_Click" Width="Auto" Height="Auto" HorizontalAlignment="Stretch" 
                    Margin="10,12,10,12" Grid.Row="1" BorderBrush="Gray" BorderThickness="1" />
      </StackPanel>



    Gruesse, NUNUI

    Montag, 16. Mai 2016 09:02