J'ai un problème avec le passage de l'objet au convertisseur dans WPF.WPF: passage de l'objet datagridrow au convertisseur
Mon DataGrid ressemble:
<DataGrid x:Name="customTasksDataGrid" Margin="10,10,10,38" Grid.Column="1" IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding Path=., Converter={StaticResource converter}, NotifyOnTargetUpdated=True}"/>
</Setter.Value>
</Setter>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Klient" Binding="{Binding Client.Names}"/>
...
</DataGrid.Columns>
</DataGrid>
Converter:
public class DateToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
CustomTask t = (CustomTask)value;
Console.WriteLine(t.ToString()); // HERE
...
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Lors de l'exécution de mon prog ligne marquée jette l'erreur, que mon objet CustomTask t est nulle. Qu'est-ce que je fais mal?
EDIT:
Comme Vadim Martynov a suggéré que je change mon convertisseur:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
CustomTask t = (CustomTask)value;
...
}
Et il fonctionne parfaitement maintenant! Merci
Qu'advient-il si vous prenez l'appel au convertisseur , c'est-à-dire remplacer par: le nom du client apparaît-il dans l'info-bulle? –
Stew52
@ Stew52 non dans ce cas, le convertisseur n'appelle jamais –
il ne le fera pas parce que vous l'avez supprimé. mais cela montre-t-il ce que vous attendez? c'est-à-dire que le contexte de données de l'info-bulle est ce que vous attendez d'elle? – Stew52