, kendisinin bir ListBox seçili öğeye bağlı için (seviyeleri), içeren her öğe bağlanır bir koleksiyon DataGrid'de görüntülenen/sıralanmasını: ...CollectionViewSource bir kaynaktan
<ListBox Name="lstLevel"
DisplayMemberPath="Name"
IsSynchronizedWithCurrentItem="True" />
<!-- DataGrid source, as a CollectionViewSource to allow for sorting and/or filtering -->
<CollectionViewSource x:Key="Players"
Source="{Binding ElementName=lstLevel,
Path=SelectedItem.Players}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
...
<DataGrid Name="lstPlayers" AutoGenerateColumns="False"
CanUserSortColumns="False"
ItemsSource="{Binding Source={StaticResource Players}}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name"
Binding="{Binding Path=Name, Mode=TwoWay}"
Width="*" />
<DataGridTextColumn Header="Age"
Binding="{Binding Path=Age, Mode=TwoWay}"
Width="80">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
-
(bütün C# kodu here, XAML kod here, tüm test projesi here DataGrid'e ek olarak ben emin bir DataGrid sorun değildi yapmak, oyuncular için basit bir liste kutusu ekledik)Sorun, oyuncuların ilk gösterildikleri sıraya göre sıralandıklarıdır, ancak ListBox'tan başka bir seviye seçtiğimde, artık sıralanmazlar. Ayrıca, oyuncuların ilk kez gösterildiği isimleri değiştirmek, değişiklikleri değiştirdikten sonra değiştirecek, ancak seviye değiştikten sonra artık değişmeyecektir.
Bu nedenle, CollectionViewSource kaynağının değiştirilmesi bir şekilde sıralama özelliğini bozuyor gibi görünüyor, ancak neden veya nasıl düzeltileceği konusunda hiçbir fikrim yok. Yanlış yaptığımı bilen var mı?
(Ben bir filtre ile bir test yaptım, ancak bir beklendiği gibi çalışmaya devam)çerçeve .NET 4.
Aynı şeyi daha önce de yaşadım - her seferinde yeni bir nesne oluşturmak yerine, içeriğini kaldırabilir ve yeniden yerleştirebilir misiniz? – Dave
Ek çalışmanın yanı sıra, nesneler oluşturarak/bırakarak yönetilen yığının gereksiz yere parçalanmasını engellerdim, yapabilseydim bundan kaçınmayı tercih ederim. – RedGlyph