Problema Cambiar el color de primer plano de una celda DataGrid WPF utilizando multibinding

StackOverflow https://stackoverflow.com/questions/5860089

  •  28-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de cambiar el color de primer plano de una copa de datos, no toda la fila, dado el valor del contenido de celda específico. Por ejemplo, si el valor de fecha de la celda está desactualizado, entonces quiero establecer el primer plano en rojo. Estoy casi donde estoy usando multibinding para extraer dos valores de la cuadrícula de datos y analizarlo a través del convertidor de valor que implementa el mejorador imultival.

En resumen, y sin necesidad de ir al convertidor mismo, he escrito el siguiente XAML: `

    <Style x:Key="CellHighlighterStyle">
        <Setter Property="my:ExtendedDataGrid.Foreground">
            <Setter.Value>
                <MultiBinding Converter="{StaticResource cellHighlighterConverter}">
                    <MultiBinding.Bindings>
                        <Binding RelativeSource="{RelativeSource self}"/>
                        <Binding Path="Row" Mode="OneWay"/>
                    </MultiBinding.Bindings>
                </MultiBinding>
            </Setter.Value>
        </Setter>            
    </Style>

I then added to my Datagrid :CellStyle = "{staticResource CellhighLighterStyleStyle}" `.

Ahora, mi convertidor ve el primero Value[0] Propiedad como DataGridcell, pero el segundo valor es algún tipo de dependencia compuesta. Es como si hubiera creado una propiedad predeterminada o ficticia cuando realmente quiero obtener la fila. De hecho, realmente me gustaría que el objeto de clase asociado a esa fila. Mi datagrid está vinculado a un List<of a class object>.

Estoy seguro de que estoy a centímetros de distancia. ¿Cómo analizo la fila DataGrid para poder extraer el valor del campo o el objeto atado a esa fila o columna en sí para que devuelva el color que quiero devolver? O, ¿hay una mejor manera de alterar selectivamente las propiedades de una celda datagrid dado el valor?

¿Fue útil?

Solución

El DataContext de la celda debe ser el objeto de datos de la fila, intente cambiar el segundo enlace a esto:

<Binding />

Que se une directamente al DataContext.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top