2013-03-26 5 views
0

J'ai un ObservableCollection<TimeSpan> Laps que je suis databinding à un gridview. Cela fonctionne comme prévu, mais je dois appliquer un convertisseur pour définir le format de la TimeSpan:Winrt IValueConverter sur un article GridView

Dans mes ressources:

<utils:TimeToStringConverter x:Key="myConverter"/> 

Mon Gridview:

<GridView HorizontalAlignment="Left" Height="278" Margin="78,220,0,0" VerticalAlignment="Top" Width="1278" ItemsSource="{Binding model.Laps}" /> 

Je le convertisseur suivant Je veux appliquer sur les éléments d'un GridView/ListView dans Winrt:

public class TimeToStringConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     TimeSpan t = (TimeSpan) value; 

     return t.ToString(@"hh\:dd\:ss\.fff"); 

    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Je n'arrive pas à comprendre comment faire fonctionner le convertisseur, et quand je l'applique sur le GridView alors il me cherche pour convertir une collection Observable plutôt qu'un simple article TimeSpan. Que devrais-je faire ici?

Cordialement

Répondre

1

Vous avez besoin quelque chose comme un

<GridView 
    ...> 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock 
       Text="{Binding Converter={StaticResource myConverter}}" /> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
+0

Bingo. Je vous remercie. J'ai essayé cela la première fois, j'ai supposé que c'était faux, j'ai réalisé qu'au lieu de donner un objet TimeSpan au Convert, il se nourrissait étrangement d'une corde. J'ai expliqué cela et cela a fonctionné. – Peter

-1

Utilisez la ligne

J'ai simplement modifié la source de l'élément comme ci-dessous

ItemsSource="{Binding model.Laps,Converter={StaticResource myConverter}}" 

<GridView HorizontalAlignment="Left" Height="278" Margin="78,220,0,0" VerticalAlignment="Top" Width="1278" ItemsSource="{Binding model.Laps,Converter={StaticResource myConverter}}" /> 
+0

modifié ci-dessous Il devrait être { StaticResource myConverter} pour son scénario. –

+0

"La diffusion n'est pas valide". Il essaye de convertir l'observablecollection qu'il apparaît, plutôt qu'un TimeSpan. – Peter