我正在尝试执行我的第一个WPF项目,并且我已经开始使用this sample project进行图像显示。其中一部分是将Listbox绑定到图像数组的XAML:
<ListBox.ItemsSource>
<x:Array Type="{x:Type ImageSource}">
<ImageSource>http://static.flickr.com/34/70703587_b35cf6d9eb.jpg</ImageSource>
<ImageSource>http://static.flickr.com/20/70703557_494d721b23.jpg</ImageSource>
<ImageSource>http://static.flickr.com/35/70703504_3ebf8f0150.jpg</ImageSource>
<ImageSource>http://static.flickr.com/35/70703474_18ef30450f.jpg</ImageSource>
</x:Array>
</ListBox.ItemsSource>
现在这很好,但我想将它绑定到子文件夹中的所有图像,它是与模式匹配的子文件夹。我的目录结构是这样的:
Archive
1994-01
Index.jpg
Page1.jpg
...
PageN.jpg
1994-02
Index.jpg
Page1.jpg
...
PageN.jpg
我想将Listbox绑定到各种Index.jpg图像。
我常用的方法是使用System.IO和Directory.GetFiles做一些CodeBehind,但由于XAML看起来相当强大,我只是想知道:这种类型的绑定是否可以完全在XAML中实现?
如上所述,WPF中的初学者,我想以“正确”的方式进行,这似乎是DataBinding。
答案 0 :(得分:4)
从WPF的角度来看,“正确”的方式是(分离代码和演示文稿):
public class IndexReader: INotifyPropertyChanged
{
public IEnumerable<string> IndexFiles
{ get { ... } set { ... raise notify } }
public void ReadIndexImagesFromFolder(string folder)
{
...
}
}
你仍然会使用绑定绑定到ListBox(在将ListReader的set实例设置为ListBox的DataContext或其父类之一之后):
<ListBox ItemsSource="{Binding IndexFiles}"/>
规则是:如果不能轻易绑定,请不要尝试。