wrote valueconverter.
it works,
but when I update my viewLists, the converter doesn't work.
what is the problem?
And can I solve it?
thanks.
What I have tried:
I have a listview:
<ListView x:Name="studentWithValueConvector" Margin="5" Background="Beige">
<pre><ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Delete" Click="Del"/>
<MenuItem Header="Update" Click="Update" /> </ContextMenu>
<ListView.View>
<GridView>
<GridViewColumn Header="Average" DisplayMemberBinding="{Binding UpdateSourceTrigger=PropertyChanged, Converter={StaticResource gradesRemarkConvertor}}" Width="140"/>
</GridView>
</ListView.View>
</ListView>
I wrote valueconverter:
public class GradeRemarkConvector : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Student stu = value as Student;
if (stu.GradesAvg < 56)
return "VERY BAD";
else if (stu.GradesAvg < 80)
return "MEDIUM";
return "VERY GOOD";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
The get/set of the Student class:
public class Student : INotifyPropertyChanged
{
private double gradesAvg;
public Student() { }
public double GradesAvg
{
get { return gradesAvg; }
set
{
if (gradesAvg != value)
{
gradesAvg = value;
OnPropertyChanged("GradesAvg");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
<pre>
The value coverter works, but when I update the viewlist, I dont see the changes.
here is the upadate :
private void btnUpdate_Click(object sender, RoutedEventArgs e)
{
stu.GradesAvg = int.Parse(txtAvg.Text.ToString());
btnAddStudent.Visibility = Visibility.Visible;
btnUpdateNames.Visibility = Visibility.Collapsed;
txtAvg.Text = string.Empty;
}