none
Panel GridLines anzeigen lassen RRS feed

  • Frage

  • Hallo,

    ich versuche gerade ein Panel zu erstellen, welches GridLines mit anzeigen soll. So wie es Grid erlaubt. Ich wollte erst onRender überschreiben, aber ich glaube, das es nicht unbedingt der Richtige weg ist, da ich irgendwo gelesen habe, das die GridLines nicht speziell im OnReder gezeichnet werden, sondern mittels einen GridLinesRenderer, was auch immer das sein mag. Leider finde ich keine Infos, wie das Grid dies bewerkstelligt. Kann mir jemand da weiter Helfen?

    Lg Marco

    Montag, 25. August 2014 21:27

Antworten

Alle Antworten

  •     <Grid VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True" Width="250" Height="100">
          <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
          </Grid.RowDefinitions>
    
          <TextBlock FontSize="20" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="0">2005 Products Shipped</TextBlock>
          <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="0">Quarter 1</TextBlock>
          <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="1">Quarter 2</TextBlock>
          <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="2">Quarter 3</TextBlock>
          <TextBlock Grid.Row="2" Grid.Column="0">50000</TextBlock>
          <TextBlock Grid.Row="2" Grid.Column="1">100000</TextBlock>
          <TextBlock Grid.Row="2" Grid.Column="2">150000</TextBlock>
          <TextBlock FontSize="16" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="3">Total Units: 300000</TextBlock>
        </Grid>


    Ich denke mal, dass dir da nur die entsprechende Column- und Row-Definition gefehlt hat. Die GridLines werden dann angezeigt.

    Das Resultat:



    Dienstag, 26. August 2014 07:40
  • Hi Uriel,

    Du kannst Dir den kompletten Source-Code des Grids hier ansehen:

    http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/Grid.cs

    Den GridLinesRenderer findest Du ebenfalls im oberen .cs-File als internal class.

    Der GridLinesRenderer erbt von DrawingVisual und wird dann in den Visual Tree "reingehängt".

    Schau Dir dazu die Methode GetVisualChild und die Property VisualChildrenCount in der Grid-Klasse an.

    Zusätzlich findest Du in der ArrangeOverride-Methode der Grid-Klasse etwas Code, der den GridLinesRenderer aktualisiert.

    Viel Spass beim Nachbau


    Thomas Claudius Huber

    "If you can't make your app run faster, make it at least look & feel extremly fast"

    My latest Pluralsight-course: Windows Store Apps - Data Binding in Depth

    twitter: @thomasclaudiush
    homepage: www.thomasclaudiushuber.com
    author of: ultimate Windows Store Apps handbook | ultimate WPF handbook | ultimate Silverlight handbook

    • Als Antwort markiert UrielMhezzek Dienstag, 26. August 2014 09:33
    Dienstag, 26. August 2014 07:42
  • Hallo Mathias, ist lieb von dir gemeint, aber es geht hier um ein Custom-Panel. Ich muss die Lines also selbst erzeugen, da ich nicht auf Grid als Basisklasse zurück greifen kann.
    Dienstag, 26. August 2014 09:27
  • Hallo Thomas,

    der Link ist einfach nur der Hammer. Ich kannte die Seite bisher noch gar nicht (obwohl ich seit Jahren in C# Programmiere). Danke für die Infos!!!

    Dienstag, 26. August 2014 09:36
  • Hallo Thomas,

    kann man diese Referenz auch irgendwie direkt in VS einbinden? Das man z.B. per Tastaturkürzel an die passende Website verwiesen wird oder gar der Text in VS angezeigt wird? Man sieht ja normal nur den Header.

    Lg Marco

    Dienstag, 26. August 2014 10:19
  • Hallo Marco,

    so ohne weiteres nicht.

    Du kannst Dir die Debug-Symbole zum Debuggen runterladen. Siehe hier: http://referencesource.microsoft.com/setup.html

    Wenn Du die Symbole hast, kannst Du direkt in den Source-Code von Microsoft debuggen. Allerdings wird F12 immer noch zu den Metadaten führen.

    Hier findest Du auch noch einen ausführlichen Blogpost zu dem Thema:

    http://blogs.msdn.com/b/dotnet/archive/2014/02/24/a-new-look-for-net-reference-source.aspx

    Ein anderes Verhalten wie das von Dir gewünschte lässt sich mit Dritthersteller-Tools wie bspw. Resharper erreichen. Die kosten jedoch was. Es scheint jedoch auch ein kostenloses Plugin zu geben, das genau Deinen Vorstellungen entspricht. Ich habe es selbst noch nicht ausprobiert, aber bei 13000 Downloads und 5 Sternen würde ich dem Plugin hier eine Chance geben:

    http://visualstudiogallery.msdn.microsoft.com/f89b27c5-7d7b-4059-adde-7ccc709fa86e

    Edit: Jep, ich hab's eben ausprobiert. Funktioniert tadellos.


    Thomas Claudius Huber

    "If you can't make your app run faster, make it at least look & feel extremly fast"

    My latest Pluralsight-course: Windows Store Apps - Data Binding in Depth

    twitter: @thomasclaudiush
    homepage: www.thomasclaudiushuber.com
    author of: ultimate Windows Store Apps handbook | ultimate WPF handbook | ultimate Silverlight handbook



    Dienstag, 26. August 2014 12:12
  • Danke für die vielen Infos Thomas. Eine Frage habe ich noch. Ich habe bisher in den Referencen nur den Klassenteil gefunden. Aber haben die WPF-Komponenten nicht auch einen WPF Definitionen?
    Freitag, 29. August 2014 15:08