1

私は最初の WPF プロジェクトを実行しようとしています。画像表示用のこのサンプル プロジェクトから始めました。その一部は、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 のように見える「適切な」方法で実行したいと考えています。

4

1 に答える 1

4

WPFの観点からの「適切な」方法は、次のとおりです(コードとプレゼンテーションを分離する)。

    public class IndexReader: INotifyPropertyChanged
    {
        public IEnumerable<string> IndexFiles 
            { get { ... } set { ... raise notify } }

        public void ReadIndexImagesFromFolder(string folder)
        {
...
        }
    }

(IndexReaderのセットインスタンスをListBoxまたはその親の1つのDataContextに設定した後)引き続きバインディングを使用してListBoxにバインドします。

<ListBox ItemsSource="{Binding IndexFiles}"/>

ルールは次のとおりです。簡単にバインドできない場合は、試行しないでください。

于 2010-01-15T06:34:58.787 に答える