none
Cambiar color texto de una fila de un datagrid según una condición RRS feed

  • Pregunta

  • Buenos días,

    necesito ayuda para poder cambiar el color de una fila en un datagrid. Resulta que tengo el siguiente datagrid creado y al mandarle los datos quiero que me ponga algunas filas con el texto de color verde.

    Como no me salia como yo quería hice un ejemplo sencillo para ver que me decía el error y me dice como que es null. Copio tanto el codigo xaml como el codigo c# con un ejemplo sencillo. Si alguien me puede ayudar lo agradecería.

    Saludos             

     <DataGrid Name="dtgGastos" Width="780" SelectionChanged="dtgIngresos_SelectionChanged" AutoGenerateColumns="False" CanUserAddRows="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False" HeadersVisibility="Column" GridLinesVisibility="None" SelectionUnit="FullRow" IsReadOnly="True" MouseDown="dtgIngresos_MouseDown" Margin="0,15,0,0">
                    <DataGrid.Columns>
                        <DataGridTextColumn x:Name="dtgId" Header="Id" Binding="{Binding Path=Id}"  Visibility="Collapsed"></DataGridTextColumn>
                        <DataGridCheckBoxColumn x:Name="dtgCheck"></DataGridCheckBoxColumn>
                        <DataGridTextColumn x:Name="dtgTipo" Binding="{Binding Path=Tipo}" Header="Tipo de Gasto" MinWidth="150"/>
                        <DataGridTextColumn x:Name="dtgNombre" Binding="{Binding Path=Nombre}" Header="Gasto" Width="*" />
                    </DataGrid.Columns>

                </DataGrid>

    private void LoadGastosPlan()
            {
                List<Gast> lstGastosAux = new List<Gast>();

                var data = new Gast { Id = "1", Tipo = "Ordinario", Nombre = "Prueba1" };
                lstGastosAux.Add(data);
                var data1 = new Gast { Id = "2", Tipo = "Ordinario", Nombre = "Prueba2" };
                lstGastosAux.Add(data1);            
                this.dtgGastos.ItemsSource = lstGastosAux;

                var converterBrush = new System.Windows.Media.BrushConverter();
                var brush = (Brush)converterBrush.ConvertFromString("#98FB98");

                foreach (Gast g in dtgGastos.Items)
                {
                    if (g.Id == "1")
                    {
                        DataGridRow row = (DataGridRow)dtgGastos.ItemContainerGenerator.ContainerFromItem(g);
                        row.Foreground = brush;
                    }
                }

    }

    • Cambiado Joyce_AC miércoles, 1 de marzo de 2017 15:39
    lunes, 27 de febrero de 2017 9:20

Respuestas

  • Buenas, 

    ya he conseguido arreglar el problema. Con el updatelayout me seguía diciendo que la Row era null.

    Pero en cambio si le meto un LoadingRow ahi ya me reconoce la Row y me deja operar con ella y cambiar colores del datagrid.

    Gracias a todos

    • Marcado como respuesta Agmaza miércoles, 15 de marzo de 2017 8:58
    miércoles, 15 de marzo de 2017 8:58

Todas las respuestas