WPF ListBox ItemsSource绑定未找到路径引用

时间:2012-04-04 19:26:36

标签: wpf list xaml binding datacontext

我是WPF的新手,我想做一个在ListBox中显示图片的应用程序。 我创建了一个名为_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(在属性中而不是代码中)使用imgList上的项来提供我的ListBox时,他找不到任何我可以与imgList相关的路径。

ListBox XAML:

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

MainWindow代码:

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

    }
}

我尝试使用ObservableCollection,但它没用。

帮助? ):

1 个答案:

答案 0 :(得分:0)

我注意到了一些事情......

  1. 看起来您的类_Images未声明为公开

  2. 当调用该类的构造函数时(当您将其添加为Window.DataContext时发生, 如何/在哪里调用CarregaImagens()。它会被叫到吗?如果没有,请输入默认构造函数。

  3. 您不应该使用下划线命名一个类(这是私有成员的惯例) 你知道为了在xaml中绑定,属性不能是私有的吗?

  4. 这些帮助......