【求助】WPF中关于treeview和listbox的数据绑定

菜鸟爱学习 2014-12-16 03:43:08
本人WPF新手,在制作一个图片浏览器的过程中遇到了一点小问题,希望前辈指教,先谢谢了!
问题如下:
我希望在窗口左侧做一个目录树,右侧显示选择文件夹下的图片预览图。

现在左侧的目录树实现了,右边看起来也有了Image控件,似乎是图片没有加载出来。
前台代码:
<Grid>
<StackPanel>
<Menu>
<MenuItem Header="文件">
<MenuItem x:Name="menuItem_openFolder" Header="打开文件夹" Click="menuItem_openFolder_Click"></MenuItem>
</MenuItem>
</Menu>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*"/>
<ColumnDefinition Width="70*"/>
</Grid.ColumnDefinitions>
<TreeView x:Name="directoryTreeView" VerticalAlignment="Top" HorizontalAlignment="Stretch" Width="auto" Height="550" Grid.Row="0" Grid.Column="0">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:DirectoryRecord}" ItemsSource="{Binding Directories}" >
<StackPanel Orientation="Horizontal">
<Image Source="Images/folder.png" Width="16" Height="16"/>
<TextBlock Text="{Binding Info.Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
<GridSplitter Width="5"></GridSplitter>
<ListBox Name="listBox_photoShow" ItemsSource="{Binding ElementName=directoryTreeView, Path=SelectedItem.Files}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" VerticalAlignment="Top" HorizontalAlignment="Stretch" Grid.Row="0" Grid.Column="1">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid >
<Image Stretch="UniformToFill" Width="130" Height="130" Source="{Binding}"></Image>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Name="wrapPanel" HorizontalAlignment="Stretch" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
</StackPanel>
</Grid>


网上找了很多例子也没弄明白,不知道问题是出在哪里。希望前辈指点一下。
...全文
347 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟爱学习 2014-12-16
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:
这跟你调试不调试没关系,必须通过FileInfo 来获取图片的具体路径??明白?
你刚才那么一问我检查了一下明白了,FIles是FIleInfo的集合,不是路径,所以绑定不上。 太感谢了! 只是新的问题来了,图片加载很慢,我再去搜搜。
exception92 2014-12-16
  • 打赏
  • 举报
回复
这跟你调试不调试没关系,必须通过FileInfo 来获取图片的具体路径??明白?
菜鸟爱学习 2014-12-16
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 Mr_eee 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] <Image Stretch="UniformToFill" Width="130" Height="130" Source="{Binding}"></Image> Source 绑定的什么?对象是不会显示图像的
这样写不是会引用上一层空间的source吗?即:{Binding ElementName=directoryTreeView, Path=SelectedItem.Files} 而且即使这样显示的绑定也不行。[/quote] Files 是个集合? 你要能找到单个file的路径下的image路径才可以显示的。[/quote] Files是个FileInfo的集合。我把源码放百度网盘上了。 这个绑定写在xaml文件里,我也没办法调试。
菜鸟爱学习 2014-12-16
  • 打赏
  • 举报
回复
不知道说清楚问题没有,代码很短,我把源码放上来。 http://pan.baidu.com/s/1i3xeY4d 还请前辈们指点一下啊
exception92 2014-12-16
  • 打赏
  • 举报
回复
引用 2 楼 Mr_eee 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] <Image Stretch="UniformToFill" Width="130" Height="130" Source="{Binding}"></Image> Source 绑定的什么?对象是不会显示图像的
这样写不是会引用上一层空间的source吗?即:{Binding ElementName=directoryTreeView, Path=SelectedItem.Files} 而且即使这样显示的绑定也不行。[/quote] Files 是个集合? 你要能找到单个file的路径下的image路径才可以显示的。
菜鸟爱学习 2014-12-16
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
<Image Stretch="UniformToFill" Width="130" Height="130" Source="{Binding}"></Image> Source 绑定的什么?对象是不会显示图像的
这样写不是会引用上一层空间的source吗?即:{Binding ElementName=directoryTreeView, Path=SelectedItem.Files} 而且即使这样显示的绑定也不行。
exception92 2014-12-16
  • 打赏
  • 举报
回复
<Image Stretch="UniformToFill" Width="130" Height="130" Source="{Binding}"></Image> Source 绑定的什么?对象是不会显示图像的

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧