Recomiendo que define un estilo para DataGridRow
que tendrá su visibilidad con destino a si se debe mostrar o no. Simplemente iterar a través de las filas no será suficiente, como mencioné en la respuesta de @ RV1987.
<DataGrid>
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding ...}" />
</Style>
</DataGrid.Resources>
</DataGrid>
EDIT:
Lo que ates a depende de donde se mantiene la información de si debe o no mostrar la fila. Por ejemplo, si cada objeto de datos en su colección encuadernada tiene una propiedad bool ShouldBeDisplayed
, tendría algo como esto:
<DataGrid>
<DataGrid.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding Path=ShouldBeDisplayed, Converter={StaticResource booleanToVisibilityConverter}}" />
</Style>
</DataGrid.Resources>
</DataGrid>
Una cosa a tener en cuenta es que cuando la virtualización está en (que es por defecto), se quiere obtener 'null' para las filas que no fueron creadas. Esto significa que no podrá iterar a través de todas las filas en una sola ejecución, a menos que configure 'VirtualizingStackPanel.IsVirtualizing =" False "' en su DataGrid, pero esto puede ocasionar que su grid tenga un bajo rendimiento. –