После ответа на эту проблему windows -toolkit я использую x: Bind для привязки элементов ObservableCollection AlertEntry к ячейкам DataGridColumn. Мой XAML выглядит следующим образом:
<controls:DataGrid ItemsSource="{x:Bind ViewModel.Alerts, Mode=OneWay}" AutoGenerateColumns="True" IsReadOnly="True">
<controls:DataGrid.Columns>
<controls:DataGridTemplateColumn Header="Time" >
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="ace:AlertEntry">
<TextBlock Text="{x:Bind Timestamp, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{H:mm:ss}'}"/>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
</controls:DataGrid.Columns>
</controls:DataGrid>
И мой класс AlertEntry:
public class AlertEntry
{
public DateTime Timestamp;
public ACEEnums.AlertLevel Level;
public ACEEnums.AlertType Type;
public string Info;
public AlertEntry(ACEEnums.AlertLevel level, ACEEnums.AlertType type, string info = "")
{
Timestamp = DateTime.Now;
Level = level;
Type = type;
Info = info;
}
}
Когда элементы добавляются в ViewModel.Alerts, я вижу, что выделенные строки добавляются в DataGrid, но они не отображать контент. Когда я удаляю привязку и добавляю фиксированное текстовое значение, оно отображается правильно при каждом добавлении строки.
Элементы AlertEntry в ViewModel.Alerts правильно содержат данные.
У меня есть подтвердил, что StringFormatConverter работает в других привязках. На самом деле StringFormatConverter никогда не вызывается.
Я использую MVVM-Light и UWP.
Спасибо!