Невозможно изменить передний план в DataGridTextColumn - PullRequest
1 голос
/ 22 июня 2011

Итак, это мой Datagrid

    <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; }
}

Теперь я хочу сдать словарный экзамен. Первый столбец заполнен словами, а другой столбец должен быть заполнен переводом. Моя единственная проблема в том, что я не могу изменить передний план неправильных переводов, которые набрал пользователь. После того, как пользователь заполнил сетку, он должен нажать на кнопку, которая проверит, все ли правильно. Неправильные слова должны превратиться в красный цвет.

Я пытался

MyVocabularyExam [i] .LanguageColor = Brushes.Red;

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

Но это не сработало. Так что, пожалуйста, кто-нибудь, помогите мне ^^

1 Ответ

6 голосов
/ 23 января 2012

Я должен был установить ElementStyle явно, чтобы это работало:

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

Возможно, есть лучшее решение, но я остановился на этом этапе.

...