2010-12-06 32 views
5

Tengo un DataGrid que contiene varios DataGridTemplateColumns. Mi problema es que la fila seleccionada actualmente convertirá algunos de los primeros planos de las celdas en blanco, es decir, hará que el texto sea blanco. DataGridTemplateColumns que contienen TextBlocks se comportan correctamente y se vuelven blancos, mientras que DataGridTemplateColumns que contienen TextBoxs no cambian cuando se selecciona la fila.WPF DataGridTemplateColumn IsSelected ForgroundColor no funciona como se esperaba

¿Alguien sabe por qué o cómo solucionar este problema?

He intentado con este solution: pero solo puede afectar TextBlocks, ¿alguien sabe lo que podría estar mal?

Respuesta

4

No estoy seguro de por qué el disparador no afectará a TextBox ForeGround, pero normalmente el color de selección no debería estar activo cuando la celda está en modo de edición, por lo que podría ser el motivo por el que TextBox rechaza el valor pero no estoy seguro. Verás el mismo efecto si usas un DataGridTextColumn y entras al modo de edición, el TextBox no tendrá el primer plano del Trigger pero lo hará el TextBlock. Para aplicar un primer plano Blanca para todos los cuadros de texto seleccionados en la cuadrícula de datos se puede hacer esto (tenga en cuenta que esto también afectará a un cuadro de texto que está en el modo de edición)

<DataGrid ...> 
    <DataGrid.Resources> 
     <Style x:Key="{x:Type DataGridCell}" TargetType="{x:Type DataGridCell}" > 
      <Style.Triggers> 
       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="Foreground" Value="White"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
     <!-- Workaround for the TextBox --> 
     <Style TargetType="TextBox"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}, Path=IsSelected}" Value="True"> 
        <Setter Property="Foreground" Value="White"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.Resources> 
    <!-- ... --> 
</DataGrid> 
+0

Al parecer, no se puede disparar el primer plano por defecto de la cuadrícula de datos debido cuadro de texto. Primer plano y texto seleccionado El primer plano es la misma clave, según el comentario de Moozhe para [esta respuesta] (http://stackoverflow.com/a/10850718/1466627). –

Cuestiones relacionadas