C# WPF:将ItemsSource绑定到目录

C# WPF:将ItemsSource绑定到目录,c#,wpf,xaml,binding,itemssource,C#,Wpf,Xaml,Binding,Itemssource,我正在尝试做我的第一个WPF项目,并且我已经开始使用图像显示。它的一部分是将列表框绑定到图像数组的XAML: <ListBox.ItemsSource> <x:Array Type="{x:Type ImageSource}"> <ImageSource>http://static.flickr.com/34/70703587_b35cf6d9eb.jpg</ImageSource> <ImageSou

我正在尝试做我的第一个WPF项目,并且我已经开始使用图像显示。它的一部分是将列表框绑定到图像数组的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>
我想将列表框绑定到各种Index.jpg图像

我通常的方法是使用System.IO和Directory.GetFiles执行一些代码隐藏,但由于XAML似乎相当强大,我只是想知道:这种类型的绑定可以完全在XAML中实现吗

如前所述,WPF的初学者和我都希望采用“适当”的方式,这似乎是数据绑定。

从WPF的角度来看,“适当”的方式是这样的(将代码和表示分离):

公共类索引阅读器:INotifyPropertyChanged
{
公共IEnumerable索引文件
{get{…}set{…raise notify}
public void ReadIndexImagesFromFolder(字符串文件夹)
{
...
}
}
您仍然可以使用绑定绑定到ListBox(将IndexReader的set实例设置为ListBox的DataContext或其父对象之一后):


规则是:如果无法轻松绑定,请不要尝试。从WPF的角度来看,“正确”的方式是(将代码和表示分离):

公共类索引阅读器:INotifyPropertyChanged
{
公共IEnumerable索引文件
{get{…}set{…raise notify}
public void ReadIndexImagesFromFolder(字符串文件夹)
{
...
}
}
您仍然可以使用绑定绑定到ListBox(将IndexReader的set实例设置为ListBox的DataContext或其父对象之一后):


规则是:如果无法轻松绑定,请不要尝试

Archive
    1994-01
        Index.jpg
        Page1.jpg
        ...
        PageN.jpg
    1994-02
        Index.jpg
        Page1.jpg
        ...
        PageN.jpg
    public class IndexReader: INotifyPropertyChanged
    {
        public IEnumerable<string> IndexFiles 
            { get { ... } set { ... raise notify } }

        public void ReadIndexImagesFromFolder(string folder)
        {
...
        }
    }
<ListBox ItemsSource="{Binding IndexFiles}"/>