2016-04-22 5 views
0

Я создал приложение WPF, которое связано с Entity Framework.Как изменить цвет одной строки в ListView?

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

Приложение имеет функцию для расчета среднего класса.

Вот фрагмент моего кода:

if (averageResult < 7 && averageResult > 5) 
{ 
    student.Average_Grade = "F"; 
} 

Так что, если это условие выполнено, я также хочу, чтобы строка краснеют или буква F покраснеть.

Я искал в Интернете, но только я нахожу, как изменить его в простом приложении WPF, не связанном с базой данных.

Как изменить цвет одной строки в ListView, если приложение WPF связано с базой данных?

UPDATE

Ive пытался этот код:

student.Average_Grade = "F" + new SolidColorBrush(Colors.Red); 

Но вместо одного строка меняет цвет всего окна

ListView Xaml

<ListView Grid.Row="0" x:Name="studentListView" SelectionMode="Single" Margin="10,10,-10,10" ItemsSource="{Binding}"> 
      <ListView.View> 
       <GridView> 

        <GridViewColumn x:Name="first_NameColumn" Width="80" Header="First Name"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="-6,-1" Text="{Binding First_Name, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="last_NameColumn" Width="80" Header="Last Name"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="-6,-1" Text="{Binding Last_Name, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="matric_NumberColumn" Width="80" Header="Matric Number"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="-6,-1" Text="{Binding Matric_Number, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 

        <GridViewColumn x:Name="component1_GradeColumn" Width="80" Header="Component 1 Grade" > 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="6,-1,-6,-1" Text="{Binding Component1_Grade, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="component2_GradeColumn" Width="80" Header="Component 2 Grade"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="-6,-1" Text="{Binding Component2_Grade, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="component3_GradeColumn" Width="80" Header="Component 3 Grade"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="-6,-1" Text="{Binding Component3_Grade, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="average_GradeColumn" Width="80" Header="Average Grade"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBox Margin="-6,-1" Text="{Binding Average_Grade, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" IsReadOnly="True"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="edit"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Button Content="Edit" Click="OnEdit"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn x:Name="delete"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Button Content="Delete" Click="OnDelete" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 
      </ListView.View> 
      <ListView.ItemContainerStyle> 
       <Style> 
        <Setter Property="Control.HorizontalContentAlignment" Value="Stretch"/> 
        <Setter Property="Control.VerticalContentAlignment" Value="Stretch"/> 
       </Style> 
      </ListView.ItemContainerStyle> 
     </ListView> 
+1

Базы данных не имеют ничего общего с ним. Использовать ItemTemplate (http://stackoverflow.com/a/8935831/424129). Вам также нужно реализовать 'INotifyPropertyChanged' в вашем классе« Студент », если вы еще этого не сделали. –

+0

Так что, согласно логике, мне нужно было бы пойти в класс Студента и внести некоторые изменения в колонку Average Grade? Все работает отлично для меня, я просто не знаю, как изменить цвет этого F – user3438350

+0

Можете ли вы поделиться своим xaml? Я думаю, вам нужен конвертер, он будет проверять, соблюдается ли условие и возвращать красный цвет. – Amine

ответ

0

Вы можете использовать конвертер. Добавьте новый класс, как показано ниже:

public class Converter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if(value.ToString() == "F") 
      return new SolidColorBrush(Colors.Red); 
     else 
      return new SolidColorBrush(Colors.Black); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

И в вашем XAML добавить следующее:

<Window.Resources> // Or UserControl.Resources 
    <local:Converter x:Key="converter"/> 
</Window.Resources> 

И заменить ItemContainerStyle

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="Control.HorizontalContentAlignment" Value="Stretch"/> 
     <Setter Property="Control.VerticalContentAlignment" Value="Stretch"/> 
     <Setter Property="Foreground" Value="{Binding Average_Grade, Converter={StaticResource converter}}" /> 
    </Style> 
</ListView.ItemContainerStyle> 
+0

, который вам нужен ? – user3438350

+0

doest work, sory – user3438350

+0

Можете ли вы дать больше деталей! Вы получаете какую-либо ошибку, исключение? – Amine

Смежные вопросы