Announcement

Collapse
No announcement yet.

[XAML] DataGridTemplateColumn.Header volle Breite der Spalte nutzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [XAML] DataGridTemplateColumn.Header volle Breite der Spalte nutzen

    Moin

    Ich entwickle gerade eine Übersicht, die mit eigenen Filtern und Sortierungen einer DataGrid funktioniert.
    Technisch habe ich das in einer Testanwendung schon funktional hinbekommen, aber ich scheitere gerade an der Positionierung der Filter.

    Das ganze spielt sich in einer DataGridTemplateColumn ab. Darin definiere ich den DataGridTemplateColumn.Header, welcher eine Bezeichnung ( Textblock ), einen Button und einen Filter ( TextBox ) haben soll.
    Da ich hier leider immer noch keine Bilder hochladen kann, setze ich mal einen Link zur Veranschaulichung.
    1. Header soll in zwei Zeilen aufgeteilt werden
    2. Erste Zeile soll zwei Spalten haben
    3. In Zeile 0, Spalte 0 befindet die Bezeichnung
    4. In Zeile 0, Spalte 1 befindet sich die Schaltfläche zum Sortieren
    5. In Zeile 1 befindet sch eine Textbox, die die volle Breite im Container einnehmen soll, also die Breite von Zeile 0, Spalte 0 + Zeile 0, Spalte 1
    Die einzelnen Punkte bekomme ich soweit hin und sieht auch passabel aus, solange die Spalte durch die geladenen Werte nicht breiter wird.
    Im Bild kann man ganz gut erkennen, was gemeint ist, glaube ich. Die Daten verbreitern die Spalte über die Breite des Header.
    Normalerweise nimmt ein Grid ja von Natur aus die volle Breite seines Eltern-Container ein, aber das scheint innerhalb des Headers nicht zu sein, denn der aktuelle Stand, wie auch auf dem Bild zu sehen sieht so aus:
    HTML Code:
                        <DataGridTemplateColumn.Header>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="Empfänger"/>
                                <Button Grid.Column="1" Content="⇅"/>
                            </Grid>
                        </DataGridTemplateColumn.Header>
    Wie gesagt, sollte das Grid ja an sich schon volle Breite haben. Durch die Definitionen der beiden Spalten wird normalerweise für die linke Spalte der komplett verfügbare Platz abzgl. der Breite der rechten Spalte verwendet.
    Da die rechte Spalte auf Auto-Breite eingestellt ist, sollte also nach meiner Kenntnis die Schaltfläche rechts in der DataGrid-Spalte andocken, tut es aber nicht. Wenn ich dem Grid eine feste Breite gebe, tut es das, weshalb ich den Vorwurf unterstelle, dass im Kontext des DataGridTemplateColumn.Header das Grid nicht die volle Breite nimmt.

    Frage:
    Welche Möglichkeit habe ich, meine gewünschtes Ergebnis hinzubekommen bzw. wie würdet ihr das machen?

    Kurze Info:
    Ich habe auch schon mit DockPanel gearbeitet usw., immer das gleiche. Im Header scheint alles anders zu sein?!
    Auch HeaderTemplate habe ich schon versucht, auch kein Erfolg.

    Danke für Tipps
    Gruß
    Arne
    PHP rocks!
    Eine Initiative der PHP Community
Working...
X