Itemscontrol Binding Index
-
Hallo
Einfach erklärte Aufgabenstellung. Ob die Umsetzung auch so einfach ist? Mal sehen.
Ich habe eine OberservableCollection<MyItem> Items
MyItem besitzt nun unter anderem eine Property Position vom Typ int.
Die Itemssource einer Itemscontrol wird nun an die OC Items gebunden.
Die Elemente sollen nun nicht in der Reihenfolge dargestellt werden in der sie in der OC liegen sondern so anhand der Position die in den einzelen Items steht.
Ist es möglich das irgendwie im XAML zu binden?
-
<ItemsControl> <ItemsControl.ItemsSource> <Binding> <Binding.Source> <CollectionViewSource Source="{Binding Path=Items}"> <CollectionViewSource.SortDescriptions> <SortDescription PropertyName="Position" /> </CollectionViewSource.SortDescriptions> </CollectionViewSource> </Binding.Source> </Binding> </ItemsControl.ItemsSource> </ItemsControl>
Oder so ähnlich.
http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.aspx
-
Danke für den Ansatz. Irgendwie funktioniert so das Binding aber nicht mehr. Irgendwas ist noch falsch an dem Code.
-
sun-ja schrieb:
Danke für den Ansatz. Irgendwie funktioniert so das Binding aber nicht mehr. Irgendwas ist noch falsch an dem Code.
Dann zeig mal her, was du probiert hast. Sonst können wir auch nur Rätselraten.
-
Hallo.
Ich habe genau deinen Code implementiert
-
sun-ja schrieb:
Ich habe genau deinen Code implementiert
Die Antwort ist eigentlich ziemlich nutzlos. Korrekt wäre, wenn du uns hier ein kleiner Auschnitt, am besten einen Beispielcode präsentierst. Sonst können wir weiterhin nur Rätselraten. Auch ist die Fehlerbeschreibung äusserst dürftig. "Geht nicht" ist keine Fehlerbeschreibung.
Aber ich mache mal ein bisschen Rätselraten, weil mir grad drum war. Dabei nehme ich an, dass der Fehler wie folgt lautete:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Items; DataItem=null; target element is 'CollectionViewSource' (HashCode=29666725); target property is 'Source' (type 'Object')
Probier daher mal das da:
<Window.Resources> <CollectionViewSource Source="{Binding Path=Items}" x:Key="cvs"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="Position" /> </CollectionViewSource.SortDescriptions> </CollectionViewSource> </Window.Resources> ... <ItemsControl ItemsSource="{Binding Source={StaticResource cvs}}" />