2013-03-26 1 views
0

У меня есть ObservableCollection<TimeSpan> Laps, который я привязываю к сетке. Это работает, как ожидалось, но мне нужно применить конвертер, чтобы установить формат TimeSpan:Winrt IValueConverter on GridView item

В моих ресурсах:

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

Мой Gridview:

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

У меня есть следующий конвертер, который Я хочу применить к элементам GridView/ListView в 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(); 
    } 
} 

Я не могу понять, как заставить конвертер работать, и когда я применяю его на GridView, он ищет меня, чтобы преобразовать коллекцию Observable, а не только элемент TimeSpan. Что мне здесь делать?

С уважением

ответ

1

Вам нужно что-то вроде

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

Бинго. Спасибо. Я попытался это сделать в первый раз, предположив, что это неправильно, понял, что вместо того, чтобы давать объект TimeSpan для Convert, он действительно кормился в строке странным образом. Я объяснил это, и это сработало. – Peter

-1

Используйте ниже модифицированная линия

Я только изменил исходный пункт, как показано ниже

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

Это должно быть { StaticResource myConverter} для его сценария. –

+0

"Недействительный ролик". Он пытается преобразовать наблюдаемую коллекцию, которая появляется, а не TimeSpan. – Peter