我是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,但它没用。
帮助? ):
答案 0 :(得分:0)
我注意到了一些事情......
看起来您的类_Images未声明为公开
当调用该类的构造函数时(当您将其添加为Window.DataContext时发生, 如何/在哪里调用CarregaImagens()。它会被叫到吗?如果没有,请输入默认构造函数。
您不应该使用下划线命名一个类(这是私有成员的惯例) 你知道为了在xaml中绑定,属性不能是私有的吗?
这些帮助......