Ich verwende DataGrids in XAML (nicht Silverlight) mit Spalten mit veränderbarer Größe. Das DataGrid wird erweitert, wenn der Benutzer die Größe des Bildschirms ändert.
Wenn derzeit die Breite aller DataGrid-Spalten kleiner als die Breite des DataGrid ist, wird eine zusätzliche "Spalte" angezeigt, die nicht anklickbar ist und keinen Zweck erfüllt.
Weiß jemand, wie man eine Spalte immer in der Größe ändert, um den gesamten verbleibenden Platz zu füllen?
AutoGenerateColumns="True"
?<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
ColumnWidth="*"
auf dem DataGrid als auchWidth="*"
auf den einzelnen Spalten hat der gewünschte EffektStellen Sie sicher, dass Ihr DataGrid
Width
auf so etwas wie eingestellt ist{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}
.Auf diese Weise sollte Ihre
Width="*"
Attributeinstellung fürDataGrid.Columns/DataGridXXXXColumn
Elemente funktionieren.quelle
Wie bereits erwähnt, ist die
ColumnWidth="*"
funktionierte das für ein DataGrid in XAML einwandfrei.Ich habe es in diesem Zusammenhang verwendet:
quelle
Stellen Sie die Spalteneigenschaft
Width
auf eine proportionale Breite ein, z*
quelle
Mein 2 Cent ->
Sehr spät zum Feiern
DataGrid -> Column -> Width = "*" funktioniert nur, wenn der übergeordnete DataGrid-Container eine feste Breite hat.
Beispiel: Ich habe das DataGrid in Grid -> Column eingefügt, dessen width = "Auto" und dann Width = "*" in DataGrid nicht funktionieren. Wenn Sie jedoch Grid -> Column Width = "450" festlegen, funktioniert es einwandfrei
quelle
Ein weiterer Dreh zum gleichen Thema:
quelle
Ich habe ein HorizontalAlignment = "Center" hinzugefügt (der Standardwert ist "Strech") und es hat mein Problem gelöst, da das Datagrid nur so breit wie nötig war. (Die Einstellung für die Breite des Datagrids wurde entfernt, falls vorhanden.)
quelle
Dadurch wird die letzte Spalte des xaml-Rasters nicht erweitert, um den verbleibenden Platz einzunehmen, wenn
AutoGeneratedColumns="True"
.quelle
Setzen Sie die Breite EINER Spalte auf einen beliebigen Wert, dh width = "*"
quelle
Für diejenigen, die nach einer C # -Umgehung suchen:
Wenn Sie aus irgendeinem Grund müssen aktiviert die „AutoGeneratedColumns“ zu haben, eine Sache , die Sie tun können , ist es, alle Spalten der Breite mit Ausnahme derjenigen geben Sie sein Auto wollen der Größe verändert (es wird den verbleibenden Platz nicht nehmen , aber es wird auf die Größe ändern Inhalt der Zelle ).
Beispiel (dgShopppingCart ist mein DataGrid):
Für mich funktioniert dies als Problemumgehung, da ich die Größe des DataGrid ändern musste, wenn der Benutzer das Fenster maximierte.
quelle