WPF ListView列图片加字符串显示,点击行数据更换列图片

限时码!20+主流AI编程工具免费用 购周边赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

.xaml页面代码 

<Grid Loaded="Grid_Loaded">
        <ListView Height="315" HorizontalAlignment="Left" Margin="168,223,0,0" Name="listView_Demo" VerticalAlignment="Top" Width="738">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="序号" Width="150" DisplayMemberBinding="{Binding Num}"/>
                    <GridViewColumn Header="姓名" Width="200" DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn Header="成绩" Width="150" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Grid Width="150">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="2*" />
                                    </Grid.ColumnDefinitions>
                                    <Image Height="18" Width="18" Name="imageName"  Source="pack://application:,,,/res/list_icon/DC_online.ico"/>
                                    <TextBlock Width="Auto" TextAlignment ="Center" Text="{Binding State}" Grid.ColumnSpan="2" />
                                </Grid>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="935,275,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
    </Grid>

xaml后台代码

 public partial class VideoPage : Page
    {
        public VideoPage()
        {
            InitializeComponent();
        }
        class StudentInfo
        {
            public int Num { set; get; }
            public string Name { set; get; }
            public string State { set; get; }

            public StudentInfo(int num, string name, string state)
            {
                this.Num = num;
                this.Name = name;
                this.State = state;
            }
        }

        private void Grid_Loaded(object sender, RoutedEventArgs e)
        {
            listView_Demo.Items.Add(new StudentInfo(11, "小花", "在线"));
            listView_Demo.Items.Add(new StudentInfo(12, "小草", "在线"));
            listView_Demo.Items.Add(new StudentInfo(13, "小蚂蚁", "离线"));

            
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {

            ListViewItem myListBoxItem = (ListViewItem)listView_Demo.ItemContainerGenerator.ContainerFromItem(listView_Demo.SelectedItem);

            ContentPresenter contentpresenter = FindVisualChild<ContentPresenter>(myListBoxItem);

            DataTemplate MyDataTemplate = contentpresenter.ContentTemplate;

            Image myTextBlock = MyDataTemplate.FindName("imageName", contentpresenter) as Image;

            myTextBlock.Dispatcher.Invoke(new Action(() => { myTextBlock.Source = new BitmapImage(new Uri("pack://application:,,,/res/list_icon/DC_offline.ico")); }));
            if (myTextBlock != null)
            {

                MessageBox.Show(myTextBlock.Name);

            }
        }
        private childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(obj, i);
                if (child != null && child is childItem)
                {
                    return (childItem)child;
                }
                else
                {
                    childItem childOfChild = FindVisualChild<childItem>(child);
                    if (childOfChild != null)
                    {
                        return childOfChild;
                    }
                }
            }
            return null;
        }

效果图如下:选中listview行,点击按钮切换图片

WPF自定义控件ListView异步图片 通过改变ListView控件的ItemsControl.ItemContainerStyle样式可以实现各式各样的表展示效果。如果后台读取文件夹图片资源后最后给ListView的ItemsSource赋值,可以在前台显示载的图片表,但是由于图片需要时间,会有一段空白停顿,并且要载的图片越大停顿的时间越长。如下图所示: 这里的解决方案是首先异步图片地址,再异步读取图片资源的方式... 阅读详情

相关推荐

C#多语言房卡棋牌游戏大厅源码:WinForm架构与实战

在桌面客户端开发中,WinForm凭借高效布局与成熟生态,依旧是构建业务复杂型应用的可靠选择。多语言切换机制基于resx资源文件与CultureInfo实现,SignalR则提供了稳定的实时通信能力,确保房间创建、好友入等状态实时推送。本文从工程分层出发,梳理了登录、房卡消耗、摄像头扩展、插件载等核心模块的源码实现,并针对语言切换不刷新、SignalR断线重连、DLL载异常等典型问题给出排查方案。无论你是C#中高级开发者,还是正在接手“大厅+子游戏”模式的项目,都能从中获得可落地的工程参考,避免重复踩

weixin_32631179的博客 325

WPF ListView 漂亮样式

WPF ListView 漂亮样式,自己还可以根据自己的需求进行样式修改,表头、表都可以根据注释进行拓展,很实用

wpf 带头像的listbox实现

wpf中DataTemplate实现带图标的listbox,网上收集资料收集了很久,才实现类似QQ好友分组节点下好友形似的表。

C# WPF ListView Bindding 图片

ListVIew 绑定图片 MainWIndow.xmal <GroupBox Grid.Column="1" Header="图片预览"> <Grid> <ListView ItemsSource="{Binding}" Name="LvImg"> <Lis...

godtoy的逆向小屋 2166

WPF修改ListView单独一显示图片

例如,想修改某一行来显示图片 <ListView AlternationCount="2" x:Name="listView" Height="305" VerticalAlignment="Top" HorizontalAlignment="Left" Width="250" Margin="3,0,3,0" BorderThickness="0,0,0,0" BorderBrush="#...

贾教练的博客 1434

WPF开发中FontAwesome字体图标的集成、封装与MVVM实践指南

在桌面应用开发领域,图标方案的选择直接影响着用户体验与开发效率。字体图标作为一种将矢量图形封装为字体的技术,其核心原理在于利用Unicode字符集映射图形,通过字体渲染引擎实现图标的显示与缩放。这项技术为开发者带来了矢量无损缩放、颜色灵活控制、资源体积小巧等显著技术价值,尤其适用于需要适配多种DPI和高分屏的桌面应用场景。在WPF框架中,字体图标与强大的样式、模板及数据绑定机制结合,能极大提升UI开发的一致性与可维护性。本文聚焦于行业广泛使用的FontAwesome图标库,深入探讨其在WPF项目中的两种核心

weixin_34288121的博客 415

AES文件夹密系统:从算法原理到工程实现的完整指南

数据密是信息安全领域的核心技术,通过数学算法将明文转换为不可读的密文,确保数据在存储和传输过程中的机密性。其核心原理基于对称密与非对称密两大体系,其中AES(高级密标准)作为当前最主流的对称密算法,以其高效性和安全性成为行业标准。在工程实践中,AES密的价值在于为文件、通信和数据库等场景提供可靠的保护层。对于本地数据安全,文件夹透明密是典型应用,它要求系统在底层自动完成解密,对用户操作无感。实现这一目标需综合运用AES算法、密钥派生函数(如PBKDF2)和CBC等工作模式,并解决大文件流式处

weixin_30673611的博客 423

WPF入门教程系二十——ListView示例(二)

Button HorizontalAlignment="Right" Name="btnRefresh" Height="22" VerticalAlignment="Top" Width="65" Click="btnRefresh_Click">刷新写完了上面的代码之后,按F5,程序运行了起来,点“刷新”按钮却没有任何数据显示。这个功能应该如何实现呢?1) 在原来只放一个按钮的地方,需要要多放一个按钮,如果只是简单的放一个按钮,就会如下图,所示,两个按钮重叠在一起。

Gefangenes的博客 630

WPF ListBox显示图片文字

Vs2015. net4.5.2 效果图============================================= 前台:============================================== <Window x:Class="WpfApplication7.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x...

u014090257的博客 2006

【Android开发学习28】界面控件之表控件(ListView)--显示字符数组

一、基础知识: ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现: 1.准备ListView显示的数据; 2.使用一维或多维动态数组保存数据; 3.构建适配器,简单地来说,适配器就是Item数组,动态数组有多少元素就生成多少个Item; 4.把适配器添ListView,并显示出来。

天 下 4062

WPFListView的漂亮样式与自定义模板

写一个 ListView控件后,绑定上数据和设置好style即可。然后设置ItemTemplate模板,这里设置每一行具体的样式、布局等。接下来,我们看看前端XAML调用。上面是Template模板设置。

qq_37189288的博客 3755

WPF载高分辨率图片性能优化

在最近的项目中,遇到一个关于WPF中同时载多张图片时,内存占用非常高的问题。 问题背景: 在一个ListView中同时载多张图片,注意:我们需要载的图片分辨率非常高。 代码: XAML: <Grid> <Grid.RowDefinitions> <RowDefinition Height="Aut...

weixin_34234721的博客 568

C# ListView图片,数据绑定和按钮

在学习此功能时,百度发现,关于这块说的都不是特别完善。特此记录一下提醒自己。界面代码 然后需要把图片表绑定到前台,这需要新建一个类: 现在就开始绑定了:这块代码,我写在xaml文件对应的cs文件下。...

weixin_45526252的博客 1401

WPF基础五:UI④ 条目控件ListView

ListView 表示用于显示数据项表的控件。 ListView为ItemsControl,这意味着它可以包含任何类型的对象的集合 (例如字符串、图像或面板) 。有关更多信息,请参见ItemsControl类。 ListView中数据项的显示是由属性指定的视图模式来定义的View。Windows Presentation Foundation (WPF) 提供了一个GridView视图模式,该模式将ListView数据项内容分区为多个。及其相关类样式中的属性和方法,...

hd51cc的博客 1147

c# winform 悬浮窗的效果_.NET CORE(C#) WPF 值得推荐的动画菜单设计

微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏。.NET CORE(C#) WPF 值得推荐的动画菜单设计阅读导航本文背景代码实现本文参考源码1. 本文背景YouTube上老外的一个设计,站长觉得不错,分享给大家作为参考,抽屉菜单的动画做的非常不错。运行起始界面:站长运行操作一遍,录制了动画大家看看:2. 代码实现使用 .NET CORE 3...

weixin_39796752的博客 1331

WPF中多幅图片显示

只是想在WPF下编写一个简单的框架,能够显示文件夹中的图片。 由于想要显示不同类型的图片,就创建了一个TabControl,再在每一个TabItem里面添了一个Image控件来显示图片。还入了一些按钮用来控制上一张或者下一张图片显示

leo_wangsheng的专栏 4863

如何在listView显示图片

如何在listView显示图片1.初始化数据源,设置Adapter 2.定义adapter的内部类 3.布局文件xml

LIUCHANGSHUO的博客 620
上一篇: WPF 时钟,星期几 同步显示
下一篇: WPF 中listview右键编辑,删除,保存
CatchMe_439
博客等级 码龄10年 31粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值