Używam DataGrids w XAML (nie Silverlight) z kolumnami o zmiennym rozmiarze, DataGrid rozwinie się, jeśli użytkownik zmieni rozmiar ekranu.
Obecnie, jeśli szerokości wszystkich kolumn DataGrid są mniejsze niż szerokość DataGrid, pojawia się dodatkowa „kolumna”, której nie można kliknąć i która nie służy żadnemu celowi.
Czy ktoś wie, jak sprawić, aby jedna kolumna zawsze zmieniała rozmiar, aby wypełnić całą pozostałą przestrzeń?
AutoGenerateColumns="True"
?<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
ColumnWidth="*"
w DataGrid, jak iWidth="*"
na poszczególnych kolumnach dają pożądany efektUpewnij się, że DataGrid jest
Width
ustawiony na coś takiego jak{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}
.W ten sposób twoje ustawienie
Width="*"
atrybutu naDataGrid.Columns/DataGridXXXXColumn
elementach powinno działać.źródło
Jak wspomniano,
ColumnWidth="*"
działał doskonale w przypadku DataGrid w XAML.Użyłem go w tym kontekście:
źródło
Ustaw
Width
właściwość kolumny na proporcjonalną szerokość, taką jak*
źródło
Mój 2 Cent ->
Bardzo późno na imprezę
DataGrid -> Column -> Width = "*" działa tylko wtedy, gdy kontener nadrzędny DataGrid ma stałą szerokość.
przykład: umieściłem DataGrid w Siatka -> Kolumna, której szerokość = "Auto", a następnie Szerokość = "*" w DataGrid nie działa, ale jeśli ustawisz Siatka -> Szerokość kolumny = "450" oznacza naprawioną, to działa dobrze
źródło
Kolejny spin na ten sam temat:
źródło
Dodałem HorizontalAlignment = "Center" (wartość domyślna to "Strech") i rozwiązało to mój problem, ponieważ sprawiło, że datagrid był tak szeroki, jak potrzeba. (Usunięto ustawienie szerokości datagridu, jeśli je posiadasz).
źródło
Nie spowoduje to rozszerzenia ostatniej kolumny siatki XAML, aby zająć pozostałą przestrzeń, jeśli
AutoGeneratedColumns="True"
.źródło
ustaw JEDNĄ szerokość kolumny na dowolną wartość, tj. width = "*"
źródło
Dla tych, którzy szukają obejścia w języku C #:
Jeśli z jakiegoś powodu chcesz włączyć opcję „AutoGeneratedColumns”, jedną rzeczą, którą możesz zrobić, jest określenie szerokości wszystkich kolumn z wyjątkiem tych, których rozmiar ma być automatycznie zmieniany ( nie zajmie to pozostałego miejsca , ale rozmiar zostanie zmieniony na zawartość komórki ).
Przykład (dgShopppingCart to moja DataGrid):
Dla mnie działa to jako obejście, ponieważ potrzebowałem zmienić rozmiar DataGrid, gdy użytkownik zmaksymalizował okno.
źródło