Polecam definiowania stylów dla DataGridRow
który będzie miał swoją widoczność związany, czy powinien on być wyświetlane czy nie. Samo powtarzanie wierszy nie będzie wystarczające, jak wspomniałem w odpowiedzi @ RV1987.
<DataGrid>
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding ...}" />
</Style>
</DataGrid.Resources>
</DataGrid>
EDIT:
Co wiąże się zależy od miejsca przechowywania informacji o tym, czy należy wyświetlić wiersz. Na przykład, jeśli każdy obiekt danych w oprawionego kolekcji ma właściwość bool ShouldBeDisplayed
, to masz coś takiego:
<DataGrid>
<DataGrid.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding Path=ShouldBeDisplayed, Converter={StaticResource booleanToVisibilityConverter}}" />
</Style>
</DataGrid.Resources>
</DataGrid>
Jedną rzeczą, aby pamiętać, jest to, że gdy wirtualizacja jest na (która jest domyślnie), to będzie pobierz 'null' dla wierszy, które nie zostały utworzone. Oznacza to, że nie będzie można iterować przez wszystkie wiersze w jednym przebiegu, chyba że ustawisz 'VirtualizingStackPanel.IsVirtualizing =" False "' na swojej DataGrid - ale może to spowodować niską wydajność twojej sieci. –