Meleak ist richtig, Sie sollten eine Sammlung irgendwie in eine andere umwandeln und sie synchronisieren. Hier ist, wie ich es das letzte Mal tat:
Ansicht (ich habe sie MyControl
unten) hat die Eigenschaft Items
vom Typ IEnumerable<Target>
DataContext hat die Eigenschaft Items
vom Typ IEnumerable<Source>
class CollectionsConverter : IValueConverter
{
public object Convert(object value, ...)
{
var source = (ObservableCollection<Source>)value;
var target = new ObservableCollection<Target>(source.Select(/* Convert items somehow /);
// subscribe to both target's and source's 'CollectionChanged' events
// and propagate them back and forth to another collection.
// Propagated events should have converted items of course
return target;
}
...
}
Dann in XAML:
<MyControl Items="{Binding Items, Converter=CollectionsConverter}" />
Was die Konvertierung der einzelnen Elemente betrifft, so kann es sich entweder um generischen Code handeln, der dynamisch bestimmt, wie die Konvertierung erfolgen soll Source
a Target
und umgekehrt, oder es sollte ein Code sein, der genau weiß, welche Typen er konvertieren wird und wie er sie konvertieren kann.