В основном я использовал опубликованный конвертер here и просто изменил тип данных как общий. Как использовать общий конвертер внутри XAML?Общее использование IValueConverter C# WPF в XAML?
public class ReverseListConverter<T> : MarkupExtension, IValueConverter
{
public ReverseListConverter()
{
}
private ObservableCollection<T> _reversedList;
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
_reversedList = new ObservableCollection<T>();
var data = (ObservableCollection<T>)value;
for (var i = data.Count - 1; i >= 0; i--)
_reversedList.Add(data[i]);
data.CollectionChanged += DataCollectionChanged;
return _reversedList;
}
void DataCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
var data = (ObservableCollection<T>)sender;
_reversedList.Clear();
for (var i = data.Count - 1; i >= 0; i--)
_reversedList.Add(data[i]);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
До конвертера был родовым я просто использовал
ItemsSource="{Binding Mails, Converter={tools:ReverseListConverter}}"
Есть ли способ сделать это с общим конвертером в XAML?
Полностью не соответствует действительности: http://msdn.microsoft.com/en-us/library/ee956431.aspx –
@DanPuzey: Позвольте мне перефразировать: для всех * практических целей *? –
Арг, извините, вы правы. Должен был протестировать (и прочитать все) до того, как я разместил сообщение. Извиняюсь! (И если вы отредактируете свой ответ, я возьму -1.) –