Saltar al contenido

WPF ocultar fila en la cuadrícula de datos según la condición

Solución:

Si hideRow no es un campo de la tabla (es decir, no es una columna en DataGridRow):

<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding AnyProp, Converter={StaticResource hiddenConverter}}" Value="True">
                <Setter Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

Y realiza Converter con tu lógica. El tipo de variable enlazada, AnyProp arriba, será yourPropertyType debajo. AnyProp podría ser cualquiera de las columnas de la fila.

[ValueConversion(typeof(yourPropType), typeof(bool))]
public class hiddenConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (hideRow == "Yes")
        {
           return true;
        }
        else
        {
           return false;
        }
    }


}

‘valor’ será AnyProp, y se puede usar en la lógica que determina si mostrar o no la fila, o esa decisión puede basarse en algo completamente diferente, como ‘hideRow’ en el ejemplo.

Puede hacer esto en Datagrid.ItemContainerStyle en lugar de hacerlo en el código subyacente …

  <DataGrid>
      <DataGrid.ItemContainerStyle>
            <Style TargetType="DataGridRow">
                 <Style.Triggers>
                       <DataTrigger Binding="{Binding PROPERTY}"  Value="VALUE">
                              <Setter Property="Visibility" Value="Collapsed"/>

Utilice CollectionViewSource para vincular el DataGrid con sus datos comerciales. CollectionViewSource desencadena un evento de filtro para cada fila. En este caso, su código puede decidir si se debe mostrar la fila.

Agregue a su XAML:

<Window.Resources>
  <CollectionViewSource x:Key="sampleViewSource" CollectionViewType="ListCollectionView"/>
</Window.Resources>

<DataGrid DataContext="{StaticResource sampleViewSource}" ItemsSource="{Binding}"
            AutoGenerateColumns="False">

Agregue lo siguiente a su archivo de código subyacente:

stocksViewSource = ((System.Windows.Data.CollectionViewSource)(FindResource("sampleViewSource")));
sampleViewSource.Filter += sampleViewSource_Filter;

Cree el controlador de eventos de filtro. Puede obtener los datos de la fila de e.Item. Al establecer e.Accepted, puede controlar si se debe mostrar la fila.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *