我正在使用过渡幻灯片控件,该控件具有绑定到itemsource的可观察集合的字符串。这些字符串是幻灯片中每张图片的文件路径。当我首先加载WPF应用程序,它运行正确此方法(使用的目录路径,以产生PicSlideShowCollection):绑定Observable集合上的GeneratorPosition错误
public void SelectImages(string path)
{
// Validate
if (string.IsNullOrEmpty(path)) throw new ArgumentException("path");
PicSlideShowCollection.Clear();
// Get directory info for specified path
DirectoryInfo di = new DirectoryInfo(path);
// Image mask
string[] extensions = new string[] { "*.jpg", "*.png", "*.gif", "*.bmp" };
// Search for all
foreach (string extension in extensions)
{
foreach (FileInfo fi in di.GetFiles(extension.ToLower()))
{
PicSlideShowCollection.Add(fi.FullName);
}
}
}
然而,我有一个按钮,允许用户改变图像中使用的目录幻灯片并重新运行上述方法。执行该操作时,出现此错误:
GeneratorPosition '-1,1' passed to Remove does not have Offset equal to 0.
这发生在PicSlideShowCollection.Clear()指令上。 如果我评论该指令,新的目录图像将被添加到原始目录图片,而这不是我想要的。
我知道这与PicSlideShowCollection被用作Slide show控件的项目源有关,但我需要知道如何防止发生此错误。
谢谢!
是的,我已经试过了。我在该方法中构建了另一个集合,并尝试将ItemsSource切换到它并发生相同的错误。它可能与幻灯片一次迭代一个来源中的项目,当我更新集合,它是在某个项目的位置或索引? – sunriser 2012-02-17 17:27:45
是的,但后来我把它称为幻灯片控制中的错误。应始终可以修改源集合。该控件的文档是否说明了可能的状态,其中禁止对源集合进行更改? – Clemens 2012-02-17 17:34:34
不幸的是,不,我阅读了整个API指南并查看了示例代码,并且没有解决这个问题。我尝试的其他事情:设置控制启用为false然后重新启用,将itemsource设置为null,然后重新绑定到集合,使用slideshowcontrol的Items成员并手动添加项目。所有产生相同的错误。 :( – sunriser 2012-02-17 17:41:46