关于wpf动态显示图片并可以调整图片顺序的问题 最近做一个项目,需要用户自行添加图片到一个控件中,此控件需要横排,如果图片过多需要显示横向滚动条,并且当用户选择一张图片时可以调整图片在控件中的顺序,比如向左移动,向右移动,移动到最前,移动到最后和删除此图片。 有没有哪位做过类似的?或者给个思路。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的思路是这样的:首先定义一个横向显示的ListBox,用ListBox来显示图片<!--Resources--><!--横向显示的ItemsPanel模板--> <ItemsPanelTemplate x:Key="HorizontalTemplate"> <StackPanel Orientation="Horizontal" /> </ItemsPanelTemplate><!--ListBox的DataTemplate模板--> <DataTemplate x:Key="picDataTemplate"> <Image Source="{Binding imgSrc}" Height="48"/> </DataTemplate><!--Resources-->......<ListBox ItemsSource="{Binding Pics}" ScrollViewer.VerticalScrollBarVisibility="Hidden" ItemsPanel="{StaticResource HorizontalTemplate}" ItemTemplate="{StaticResource picDataTemplate}"/>这样图片就能够显示了,而且有水平滚动条,剩下的移动和删除就是对数据源进行操作了,定义几个按钮,在按钮的Command中对ItemsSource绑定的集合Pics进行操作,完成后通知页面更改,应该就可以实现了这里我假定绑定的实体List<Model>中有imgSrc属性,是显示图片的地址;如果用过MVVM就知道,更改List后,viewModel一般都实现INotifyPropertyChanged接口,修改后需要使用RaisePropertyChanged通知页面更改 我刚接触wpf 我用上边的方法试了一下listbox中加不上图片,能不能给个完整的代码?? 我还有一个问题 当点击动态添加的图片时需要在窗口中显示给图的大图,我再摸版中添加了一个事件MouseLeftButtonDown="Image_MouseLeftButtonDown"然后再后台事件处理中添加Image im = (Image)e.Source;string imUrl = im.Source.ToString();BitmapImage imgurl = new BitmapImage();imgurl.BeginInit();imgurl.UriSource = new Uri(imUrl, UriKind.Absolute);imgurl.EndInit();PPT_Build pptb = new PPT_Build();//PPT_Build是动态显示图片的窗口pptb.imgShow1.Source = imgurl;为什么我给该窗口的imgShow1副职没反应呢????? 我只是提供一个思路,而且肯定是可以实现的,我上面也只是View界面部分的代码,你还需要自己定义Model,和ViewModel,然后设置窗体或根布局的DataContext为该ViewModel实例,这样我的绑定才能生效,我习惯使用MVVM了,所以没有提供CodeBehind方式,两种方式原理都一样,关键要弄懂wpf的数据绑定和模板用法 关于后面一个问题,我觉得可以这样,开始的时候全部显示缩略图,当MouseOver或选中的时候显示全图,也就是大图,可以使用RenderTransform来实现图片放大和缩小,不用另外写CodeBehind代码如果你想在另外一个单独的Image控件中显示选中的图片,就更简单了,通过绑定listBox的SelectedItem就可以实现了<Image Source="{Binding SelectedItem.imgSrc,Element=listboxName,Mode=OneWay}"> 好了 显示大图的解决了 刚开始我把模板加到了 app文件中了 所以不能显示大图 现在我放到窗体里了 请教一个SQL问题,取出A字段中不同于B字段中的那个值 如何ArrayList里面再放ArrayList? 关于启动调试的问题 请教一个继承事件的相关问题 有生以来最大的难题,狂送100分 html内容导出word 如何结束Excel的进程??? 不安装客户端访问SQL Server的问题 c#中有关api的操作!! docker build .net core 项目报错 急~~~急~~~~httpwebrequest 登录问题--在线等 c# 怎么读取和导出csv文件??
<!--Resources-->
<!--横向显示的ItemsPanel模板-->
<ItemsPanelTemplate x:Key="HorizontalTemplate">
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate><!--ListBox的DataTemplate模板-->
<DataTemplate x:Key="picDataTemplate">
<Image Source="{Binding imgSrc}" Height="48"/>
</DataTemplate>
<!--Resources-->...
...
<ListBox ItemsSource="{Binding Pics}" ScrollViewer.VerticalScrollBarVisibility="Hidden" ItemsPanel="{StaticResource HorizontalTemplate}" ItemTemplate="{StaticResource picDataTemplate}"/>这样图片就能够显示了,而且有水平滚动条,剩下的移动和删除就是对数据源进行操作了,定义几个按钮,在按钮的Command中对ItemsSource绑定的集合Pics进行操作,完成后通知页面更改,应该就可以实现了这里我假定绑定的实体List<Model>中有imgSrc属性,是显示图片的地址;如果用过MVVM就知道,更改List后,viewModel一般都实现INotifyPropertyChanged接口,修改后需要使用RaisePropertyChanged通知页面更改
MouseLeftButtonDown="Image_MouseLeftButtonDown"
然后再后台事件处理中添加
Image im = (Image)e.Source;string imUrl = im.Source.ToString();
BitmapImage imgurl = new BitmapImage();
imgurl.BeginInit();
imgurl.UriSource = new Uri(imUrl, UriKind.Absolute);
imgurl.EndInit();PPT_Build pptb = new PPT_Build();//PPT_Build是动态显示图片的窗口
pptb.imgShow1.Source = imgurl;为什么我给该窗口的imgShow1副职没反应呢?????