У меня есть Silverlight 4 DataGrid , у которого ItemsSource связан с ObservableCollection .Когда я изменяю элемент моего ObservableCollection , измененный элемент корректно отображается внутри моей сетки, за исключением элемента одного столбца .Этот столбец отличается от других тем, что он TemplateColumn и использует ValueConverter .
Шаблон для столбца состоит из простой stackPanelэто включает в себя элемент управления Path и метку.И Метка привязана к некоторому объекту-источнику с помощью простого ValueConverter.
Проблема теперь заключается в том, что когда я изменяю какой-либо элемент, который принадлежит ObservableCollection, все столбцы сетки отображаются правильно, кромеодин описан выше.Он просто остается неизменным - но когда я использую курсор мыши, чтобы выбрать DataGridCell и щелкнуть по нему второй раз, неожиданно происходит желаемое обновление.
Так что я предполагаю, что это что-то простое, чего мне здесь не хватает, но я могу »не могу найти ...
Заранее спасибо ..
РЕДАКТИРОВАТЬ:
Тем временем я смог найтипроблема: кажется, что после того, как я изменяю элемент моей ObservableCollection, соответствующий ValueConverter, принадлежащий метке в моей сетке, связанной с источником, просто не вызывается.Когда я щелкаю внутри ячейки, ValueConverter вызывается, как и должно быть.НО это не будет автоматически - так как мне этого добиться?пожалуйста, помогите:)
РЕДАКТИРОВАТЬ:
Привязка:
<sdk:Label Content="{Binding Route.Legs, Converter={StaticResource IncomingTableRouteTripConverter}}" Margin="9,0,0,0" Style="{StaticResource TripLabelTemplate}" FontFamily="Arial" FontSize="10.667" Padding="0" Height="10" FontWeight="Bold" />
Это код моего ValueConverter: (Но я не думаю, что код конвертера имеет какое-либо отношение к моей проблеме, я только разместил его здесь для полноты)
public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
string trip = "";
if (value != null) {
List<Leg> legs = (List<Leg>)value;
if (legs.Count >= 1) {
for (int i = 0; i <= legs.Count - 1; i++) {
trip += ((Leg)legs[i]).Start.ICAO + " - " + ((Leg)legs[i]).Stop.ICAO + " - ";
}
trip = trip.Substring(0, trip.Length - 2);
}
}
return trip;
}