2011-10-27 4 views
0

Dans Silverlight 4 j'ai un DataGrid avec un DataGridTextColumn. Les cellules de cette colonne sont modifiables. Maintenant, j'ai le problème que j'ai changé la couleur de la grille entière en blanc sur noir au lieu du noir par défaut sur blanc. J'ai réussi à changer toutes les couleurs pertinentes, à l'exception de la couleur de texte de la cellule pendant le mode d'édition. C'est toujours noir, donc ça a l'air plutôt mauvais.Comment changer la couleur du texte de la cellule en mode édition dans Silverlight DataGrid?

Des conseils pratiques pour le faire? J'ai passé beaucoup de temps à googler et à chercher ce problème mais je n'ai trouvé aucune solution. Merci d'avance!

Répondre

0

Essayez de modifier l'arrière-plan de DataGridCell, l'arrière-plan de TextBox dans DataGridTextColumn est transparent, il doit donc capturer l'arrière-plan de la cellule.

Voici quelque chose qui a fonctionné pour moi:

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 
     x:Class="DataGridTextBoxBackground.MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:p="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="400"> 

<Grid x:Name="LayoutRoot" Background="White"> 
    <Grid.Resources> 
     <Style TargetType="p:DataGridCell"> 
      <Setter Property="Background" Value="Black" /> 
      <Setter Property="Foreground" Value="White" /> 
     </Style> 
    </Grid.Resources> 
    <sdk:DataGrid x:Name="gridItems" AutoGenerateColumns="False"> 
     <sdk:DataGrid.Columns> 
      <sdk:DataGridTextColumn Binding="{Binding Name}" Header="Name" /> 
     </sdk:DataGrid.Columns> 
    </sdk:DataGrid> 
</Grid> 

Voici le codebehind pour le XAML ci-dessus:

namespace DataGridTextBoxBackground 
{ 
    public partial class MainPage : UserControl 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
      this.Loaded += new RoutedEventHandler(MainPage_Loaded); 
     } 

     void MainPage_Loaded(object sender, RoutedEventArgs e) 
     { 
      List<DataItem> items = new List<DataItem>(); 
      items.Add(new DataItem("item 1")); 
      items.Add(new DataItem("item 2")); 
      items.Add(new DataItem("item 3")); 
      items.Add(new DataItem("item 4")); 
      items.Add(new DataItem("item 5")); 

      this.gridItems.ItemsSource = items; 
     } 
    } 

    public class DataItem 
    { 
     public DataItem() { } 

     public DataItem(string name) 
     { 
      Name = name; 
     } 
     public string Name { get; set; } 
    } 
} 
+0

Désolé, cela ne fonctionne pas. Cela change la couleur de premier plan de la cellule, mais en ** mode édition **, lorsque le texte de la cellule n'est pas sélectionné, la couleur de premier plan est toujours noire. – Tobias

+0

Vous pourriez avoir des styles conflictuels quelque part. Utilisez-vous un thème ou est-ce que vous stylisez tout vous-même? Si oui, comment? –

Questions connexes