2011-06-22 5 views
1

の前景を変更することはできません、これは私のデータグリッドであるだから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> 

- 私、次のプロパティ

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

でデータグリッドへのリストを結合今私は語彙試験を作りたいです。最初の列は単語で満たされ、もう1つの列は翻訳で満たされなければなりません。 私の唯一の問題は、ユーザーが入力した間違った翻訳のフォアグラウンドを変更できないことです。 ユーザーがグリッドを塗りつぶした後、ボタンをクリックする必要があります。ボタンをクリックすると、すべてが正しいかどうかがチェックされます。間違った言葉は赤色に変わる必要があります。

Iは

MyVocabularyExam [I] .LanguageColor = Brushes.Redを試みました。

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

しかし、それはうまくいきませんでした。 だから、誰かが、私はそれを動作させるために、明示的にElementStyleを設定する必要がありました^^

+0

http://stackoverflow.com/questions/1745132/how-do-i-change-the-background-color-of-a-cell-using-wpf-toolkit-datagridを参照してください。 – Mikhail

答えて

6

を助けてください:

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

はたぶん、より良い解決策はありますが、私はこの時点で検索を停止します。

+0

私はこれを探しています3つの完全な日のための答え....ありがとう。 – Danielle