C# WPF ListBox 动态显示图片

这篇具有很好参考价值的文章主要介绍了C# WPF ListBox 动态显示图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        最近在和其他软件联合做一个本地图片选择传输功能,为此希望图片能够有序的呈现在客户端,简单的实现了一下功能,通过Mvvm模式进行呈现,过程简单通俗,话不多说直接上图。

C# WPF ListBox 动态显示图片,c#,wpf,开发语言

处理过程

 前台代码
  1. 你只需要粘贴到你的前台xml中就可以,位置记得调整下Margin,我这是按照我的位置进行调整的,所以针对ListBox在你的前台你还需要调整下。
    <ListBox Name="lstFileManager" Background ="Transparent" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" Margin="69,192,50,40">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <!--这里修改内容整体大小以及在你框内的占比,我这一行显示5个-->
                <Grid Margin="17" Width="100" Height="155">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" ></RowDefinition>
                        <RowDefinition Height="Auto" ></RowDefinition>
                        <RowDefinition Height="Auto" ></RowDefinition>
                    </Grid.RowDefinitions>
                    <Image Source="{Binding Pic}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100"/>
                    <Border BorderThickness="1" BorderBrush="red" Margin="1,107,1,0"/>
                    <TextBlock Text="{Binding Name}" Grid.Row="1" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" Height="Auto" TextWrapping="Wrap"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
后台代码
  1. 创建一个类进行数据绑定
        public class LVData
        {
            public string Name { get; set; }
            public BitmapImage Pic { get; set; }
        }
  2. 定义一个集合进行数据缓存 (集合定义在MainWindow的类中)
    ObservableCollection<LVData> LVDatas = new ObservableCollection<LVData>();
  3. 在我们的逻辑中进行数据填充和呈现,清除集合清空ListBox中的Item显示
    //添加图
    LVDatas.Add(new LVData { Name = "图片在ListBox中显示的名称(建议直接显示图片名称)", Pic = new BitmapImage(new Uri("完整的图片路径")) });
    //显示在ListBox中
    lstFileManager.ItemsSource = LVDatas;
    //清除集合清空呈现
    LVDatas.Clear();
    //当前点击的图片名称(lstFileManager.SelectedIndex  这是目前点击的下标)
    Console.WriteLine(LVDatas[lstFileManager.SelectedIndex].Name);
  4. 整体代码
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace ImageTexture
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            //定义集合
            ObservableCollection<LVData> LVDatas = new ObservableCollection<LVData>();
            public MainWindow()
            {
                InitializeComponent();
                ImageTexture2DView("E:\\ProjectFiles\\ImageTexture");
            }
            private void ImageTexture2DView(string path)
            {
                //Path是图片所在的文件夹路径
                var apps = System.IO.Directory.GetFiles(path);
                List<string> images = new List<string>();
                foreach (string app in apps)//---遍历文件夹所有文件
                {
                    var fi = new FileInfo(app);//---使用FileInfo类进行操作
                    if (fi.Extension == ".png")
                    {
                        //将图片添加到LVData中
                        LVDatas.Add(new LVData { Name = fi.Name.Remove(fi.Name.LastIndexOf(".")), Pic = new BitmapImage(new Uri(fi.FullName)) });
                    }
                }
                //进行呈现
                lstFileManager.ItemsSource = LVDatas;
            }
            private void ImageClear_Click(object sender, RoutedEventArgs e)
            {
                //清除集合清空ListBox中的Item显示
                LVDatas.Clear();
            }
        }
        public class LVData
        {
            public string Name { get; set; }
            public BitmapImage Pic { get; set; }
    
        }
    }
    

结局    

后续想从数据库或者其他地方添加就根据自己的想法添加就可以了,另外获取点击的是哪个绑定个监听事件就可以了,希望对大家有帮助。文章来源地址https://www.toymoban.com/news/detail-655397.html

到了这里,关于C# WPF ListBox 动态显示图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】

    正确的格式,注意字体文件 “xxxx.ttf” 应写为 “#xxxx” 比如我的图标字体在当前项目的 /Assets/Fonts/ 路径下,那么我在MainWindow中引入该图标的话,应该如下面的代码一样。 点击字体文件,然后右键–属性,将生成操作选为Resource(资源)即可

    2024年02月12日
    浏览(29)
  • avalonia、WPF使用ScottPlot动态显示ECG心电图

    avalonia、WPF使用ScottPlot动态显示ECG心电图 1.安装ScottPlot.Avalonia NuGet包 注意: 如果开发环境是macos、linux,需要按照官网步骤配置环境 此处是官网配置链接 view部分 注意安装包之后引入 xmlns:ScottPlot=\\\"clr-namespace:ScottPlot.Avalonia;assembly=ScottPlot.Avalonia\\\"

    2024年02月11日
    浏览(40)
  • C# WPF上位机开发(键盘绘图控制)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         在软件开发中,如果存在canvas图像的话,一般有几种控制方法。一种是鼠标控制;一种是键盘控制;还有一种是定时器控制。定时器控制,多常见动画、游戏、3d视频当中。而鼠标控制

    2024年02月02日
    浏览(33)
  • C# WPF窗体设计器显示以及App.xaml文件打不开(VS 2022)

    在项目中遇到了App.xaml设计器打不开以及窗体设计器不显示,只有代码,如图所示: 可以明显的看见左下角的设计器不见,但是用户控件又有设计器 (一、App.xaml不能正常打开) ①清理项目 ②将不能正常打开的App.xaml以及App.xaml.cs文件右键从项目中排除 ③点击显示所有文件,将

    2024年02月06日
    浏览(34)
  • C#开发winform&wpf后台捕获鼠标移动事件

    做 WPF和winform的时候,可以在界面上设置鼠标移动事件来检测鼠标移动,如果项目为后期改造这样做的话改动量很大,今天通过另外一种后台调用windows api的方式进行快速捕获和触发,提高开发效率分享给大家。

    2024年02月16日
    浏览(36)
  • C# WPF上位机开发(Web API联调)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         很多时候,客户需要开发的不仅仅是一个上位机系统,它还有其他很多配套的系统或设备,比如物流小车、立库、数字孪生等一整套系统。这个时候,上位机系统就需要和各个子系统

    2024年01月20日
    浏览(28)
  • WPF应用开发之控件动态内容展示

    在我们开发一些复杂信息的时候,由于需要动态展示一些相关信息,因此我们需要考虑一些控件内容的动态展示,可以通过动态构建控件的方式进行显示,如动态选项卡展示不同的信息,或者动态展示一个自定义控件的内容等等,目的就是能够减少一些硬编码的处理方式,以

    2024年02月05日
    浏览(54)
  • C#创建DataTable并填充数据,按钮事件实现全选,并到全选的值。wpf开发

    wpf开发中,用事件创建一个datatable度填充到datagird里面,在datagrid里面有第一列是复选框。用一单击事件实现全选,用一个按钮事件得到所选中的值。 Window x:Class=\\\"WpfApp4.MainWindow\\\"         xmlns=\\\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\\\"         xmlns:x=\\\"http://schemas.microsoft.com

    2024年02月08日
    浏览(29)
  • C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)

    继上节完成winform版的应用后,今天再爆肝wpf版的,看看看。 可以看到,wpf的确实还是漂亮很多,现在人都喜欢漂亮的,颜值高的,现在是看脸时代,作为软件来说,是交给用户使用的,UI自然是要讲究,可以看出,wpf比winform漂亮多了,因为wpf使用样式css来美化界面,虽然这

    2024年01月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包