我将 MainPage 中的 ListBox 绑定到使用 CameraCaptureTask 拍摄的图像集合。一切正常,尽管我希望能够在我的 SettingsPage 中的各个 RadioButtons 被选中时将排序顺序从升序更改为降序。我在 IsolatedStorage 中创建了一个值,它会记住选中了哪个 RadioButton,这样当我的应用程序的 MainPage 加载时,ListBox 的绑定集合将被相应地排序和显示。然而,我的收藏品的实际排序是我遇到问题的地方。注意,其中每幅图像在集合中,一个DateTaken
属性也被保存了。
主页.xaml
<ListBox x:Name="Recent" ItemsSource="{Binding Pictures}" Margin="8"
SelectionChanged="recent_SelectionChanged"
</ListBox>
现在,在我的构造函数中,我设置了DataContext
equal to PictureRepository.Instance
,它实际上填充了来自 IsolatedStorage 的图像。我不确定在绑定之前在哪里或如何更改集合的排序顺序。我在想,事实上我可能想要绑定一个排序列表的副本,实际上并没有改变 IsolatedStorage 中的排序顺序。我试图做一些从按日期时间值排序列表框项目中引用的事情
MainPage.xaml.cs
public MainPage()
{
InitializeComponent();
DataContext = PictureRepository.Instance;
//Determine which Sort Radio Button has been Checked and display collection accordingly
//Also not sure if this should be performed in the OnNavigatedTo event
if (Settings.AscendingSort.Value)
{
//PictureRepository.Instance.Pictures.OrderBy(p => p.DateTaken).First();
//DataContext = PictureRepository.Instance;
var items = Recent.Items.Cast<CapturedPicture>().OrderBy(p => p.DateTaken).ToArray();
if (Recent.Items.Count != 0)
Recent.Items.Clear();
Recent.Items.Add(items);
}
else
{
//PictureRepository.Instance.Pictures.OrderByDescending(p => p.DateTaken).First();
//DataContext = PictureRepository.Instance;
var items = Recent.Items.Cast<CapturedPicture>().OrderByDescending(p => p.DateTaken).ToArray();
Recent.Items.Clear();
Recent.Items.Add(items);
}
}
这两个选项都没有奏效,尽管我承认我之前从未尝试过在填充 ListBox 之前对 ObservableCollection 进行排序。在学习这个概念时,任何链接、帮助或建议都将不胜感激!