0

私はWPFが初めてで、リストボックスに写真を表示するアプリをやりたいです。ローカル フォルダから画像を取得し、リストに追加する _Images というクラスを作成しました。

namespace wpfAppSlides.Imagens
{
    class _Images
    {
        public List<Image> imgList = new List<Image>();

        public void CarregaImagens()
        {
            string dir = @"C:\Users\devUser\Img";

            foreach (string file in Directory.GetFiles(dir))
            {
                Image image = new Image();
                BitmapImage source = new BitmapImage();
                source.BeginInit();
                source.UriSource = new Uri(file, UriKind.Relative);
                source.EndInit();
                image.Source = source;

                imgList.Add(image);

            }
        }
    }
}    

次に、XAML で名前空間を参照しました。

xmlns:is="clr-namespace:wpfAppSlides._Images"
xmlns:col="clr-namespace:wpfAppSlides"

そして、DataContext を入れます。

<Window.DataContext>
    <is:_Images></is:_Images>
</Window.DataContext>

しかし、ItemsSource (コードではなくプロパティ) を使用して、ListBox に imgList の項目をフィードしたい場合、imgList に関連付けることができるパスが見つかりません。

リストボックス XAML:

<ListBox Height="110" 
             HorizontalAlignment="Left" 
             Margin="14,50,0,0" 
             Name="listBox1" 
             VerticalAlignment="Top" 
             Width="477" ItemsSource="{Binding}" />

メインウィンドウ コード:

public partial class MainWindow : Window
{
    _Imagens imgs;
    public MainWindow()
    {
        InitializeComponent();
        imgs = (_Images)this.DataContext;
        imgs.CarregaImagens();

    }
}

ObservableCollection を使ってみましたがだめです。

ヘルプ?):

4

1 に答える 1

0

私はいくつかのことに気づきました。

  1. クラス_Imagesがパブリックとして宣言されていないようです

  2. そのクラスのコンストラクターが呼び出されると(Window.DataContextとして追加すると、CarregaImagens()はどのように/どこで呼び出されますか。呼び出されることはありますか?呼び出されない場合は、デフォルトのコンストラクターに入れてください。

  3. xamlでバインドするために、プロパティをプライベートにすることはできないことを知っているアンダースコア(プライベートメンバーの規則)を使用してクラスに名前を付けないでください。

これらの助けを願っています...

于 2012-04-04T20:20:22.103 に答える