Mam datagrid, w którym wyświetlam kilka obiektów z niektórych kolumn. Dodałem zgrupowanie do datagridu i teraz wygląda na to, że nie przypomina kolumn o szerokości "*" - wszystkie kolumny są zwinięte do minimalnej szerokości. Jednak po odświeżeniu siatki (po dodaniu elementu lub zmodyfikowaniu istniejącego) widzę kolumny odświeżające w porządku. Dziwne jest to, że wywołuję tę samą funkcję dwa razy i za pierwszym razem nie działa, podczas gdy drugi to robi.Kolumny są zwinięte podczas używania grupy w datagrid
Przed:
http://www.microage-dil.ca/SO/GridBefore.png
Po aktualizacji raz
http://www.microage-dil.ca/SO/GridAfter.png Oto funkcja Refresh:
Private Sub ListerDocuments()
Dim lstCVDocuments As New ListCollectionView(_oLstDocuments)
lstCVDocuments.GroupDescriptions.Add(New PropertyGroupDescription("TypeFichier"))
GridDocuments.ItemsSource = lstCVDocuments
GridDocuments.Items.Refresh()
End Sub
A teraz DataGrid:
<DataGrid x:Name="GridDocuments" Grid.Column="0" ItemsSource="{Binding}" Style="{StaticResource BaseGrid}" IsTabStop="False">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Nom" Width="2*" MinWidth="150"
Binding="{Binding NomFichier}"
IsReadOnly="True" />
<DataGridTextColumn Header="Fichier" Width="3*" MinWidth="150"
Binding="{Binding NomFichierOriginal}"
IsReadOnly="True" />
<DataGridTextColumn Header="Extension" Width="65" MinWidth="50"
Binding="{Binding ExtensionFormate}"
IsReadOnly="True" />
<DataGridTextColumn Header="Date d'ajout" Width="80" MinWidth="80"
Binding="{Binding DateAjout, StringFormat=yyyy-MM-dd}"
IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
Dostałem część grupującą w sieci i wydawało się, że działa dobrze, dopóki nie znalazłem tego konkretnego błędu. Zauważ, że dodałem HorizontalAlignment = "Strech", ponieważ mogłem rozwiązać problem, ale nie było to prawdą.
EDIT: Zapomniałem wspomnieć, pierwszy raz wywołać funkcję ListerDocument, zmienna jest w pełni załadowany z dokumentami i to się nazywa w konstruktorze (nowy)
Wielkie dzięki. Tyle rzeczy o WPF ... –
Wielkie dzięki - uderz ten problem przez wiele godzin i to rozwiązało dokładnie. – WhileTrueSleep
Wow. Dzięki wielkie. WPF. – JohnB