2011-06-22 19 views
1

所以,这是我的Datagrid在DataGridTextColumn无法更改前景

<DataGrid AutoGenerateColumns="false" Height="270" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="503" ItemsSource="{Binding Path=MyVocabularyExam, Mode=TwoWay}" CanUserAddRows="False" CanUserResizeColumns="False" CanUserReorderColumns="False" CanUserSortColumns="False" SelectionMode="Single" SelectionUnit="Cell" >  
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="Sprache1" Width="*" Header="Sprache1" Binding="{Binding Language1}" IsReadOnly="True" /> 
      <DataGridTextColumn x:Name="Sprache2" Width="*" Header="Sprache2" Binding="{Binding Language2, Mode=TwoWay}" IsReadOnly="False" Foreground="{Binding LanguageColor}"/>   
     </DataGrid.Columns>  
    </DataGrid> 

I'm绑定列表到DataGrid具有以下属性

public class myVocabulary 
{ 
    public string Language1 { get; set; } 
    public string Language2 { get; set; } 
    public SolidColorBrush LanguageColor { get; set; } 
} 

现在我想打一个词汇考试。第一列填写单词,另一列填写翻译。 我唯一的问题是,我无法更改用户输入的错误翻译的前景。 用户填好网格后,他必须点击一个按钮,它会检查一切是否正确。错误的单词必须变成红色。

我试图

MyVocabularyExam [I] .LanguageColor = Brushes.Red;

MyVocabularyExam [i] .LanguageColor = new SolidColorBrush(Colors.Red);

但是没有奏效。 所以,请帮助我的人^^

+0

查看http://stackoverflow.com/questions/1745132/how-do-i-change-the-background-color-of-a-cell-using-wpf-toolkit-datagrid – Mikhail

回答

6

我必须设置ElementStyle明确,使其工作:

<DataGridTextColumn.ElementStyle> 
    <Style TargetType="{x:Type TextBlock}"> 
     <Setter Property="Foreground" 
       Value="{Binding Path=FontColor}"></Setter> 
    </Style> 
</DataGridTextColumn.ElementStyle> 

也许有更好的解决办法,但我此时停止搜索。

+0

我一直在寻找这个回答3整天....谢谢alesterre! – Danielle