news 2026/6/10 14:29:35

WPF ListBoxItem绑定自己在ListBox中的顺序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WPF ListBoxItem绑定自己在ListBox中的顺序

案例,一个ListBox绑定后台实体链表:

界面显示三个模块,自定义模板实现:

顺序一般来说在C#的链表里从0开始,我这里想让其从1开始,使用了这种方法,可以传递顺序到后台命令。

<ListBox ItemContainerStyle="{StaticResource ActionItemStyle}" ItemsSource="{Binding OverallActions}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListBox.ItemTemplate> <DataTemplate> <Border Margin="3" BorderThickness="1" CornerRadius="5"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <!-- 显示配置信息 --> <StackPanel Grid.Column="0" Margin="10"> <TextBlock FontSize="14" FontWeight="Bold" Text="{Binding ActionDescription}" /> </StackPanel> <!-- 索引显示 --> <TextBlock Grid.Column="1" Margin="10" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16" FontWeight="Bold" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Converter={StaticResource IndexConverter}}" /> <!-- 操作按钮 --> <StackPanel Grid.Column="2" Margin="10" Orientation="Horizontal"> <!-- 主操作按钮 --> <Button Width="60" Height="30" Margin="0,0,5,0" Command="{Binding DataContext.ExecuteActionHandleModelCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Converter={StaticResource IndexConverter}}" Content="执行" /> </StackPanel> </Grid> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox>

传递参数:

CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Converter={StaticResource IndexConverter}}"

绑定索引的转换器:

public class ItemToIndexConverter : IValueConverter { // 单值转换(用于ListBoxItem/DataGridRow获取索引) public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is ListBoxItem listBoxItem) { var listBox = ItemsControl.ItemsControlFromItemContainer(listBoxItem); if (listBox != null) { int index = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem); return index >= 0 ? (index + 1).ToString() : "N/A"; } } else if (value is DataGridRow dataGridRow) { var dataGrid = ItemsControl.ItemsControlFromItemContainer(dataGridRow); if (dataGrid != null) { int index = dataGrid.ItemContainerGenerator.IndexFromContainer(dataGridRow); return index >= 0 ? (index + 1).ToString() : "N/A"; } } return "N/A"; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 9:00:51

2.6 Docker网络深度解析:Bridge、Host、None网络模式实战对比

Docker网络深度解析:Bridge、Host、None网络模式实战对比 引言 Docker 网络是容器通信的基础,理解不同的网络模式对于构建分布式应用至关重要。本文将深入解析 Docker 的 Bridge、Host、None 等网络模式,通过实战对比让你彻底掌握容器网络原理。 一、Docker 网络基础 1.…

作者头像 李华
网站建设 2026/6/10 8:58:13

亲测Z-Image-Turbo:8步出图、16G显卡可用,AI绘画效果惊艳实录

亲测Z-Image-Turbo&#xff1a;8步出图、16G显卡可用&#xff0c;AI绘画效果惊艳实录 1. 这不是又一个“快一点”的模型&#xff0c;而是真正能用的生产力工具 你有没有过这样的体验&#xff1a; 打开一个AI绘图工具&#xff0c;输入提示词&#xff0c;满怀期待点下生成——然…

作者头像 李华
网站建设 2026/6/10 10:39:25

网络安全工程师,网络安全入门到精通,看这一篇就够了!

随着互联网的发展和大数据时代的到来&#xff0c; 网络已经日渐深入到 我们生活、工作中的方方面面&#xff0c; 社会信息化和信息网络化&#xff0c; 突破了应用信息在时间和空间上的障碍&#xff0c; 使信息的价值不断提高。 但是&#xff0c;与此同时 网页篡改、计算…

作者头像 李华
网站建设 2026/6/10 10:40:37

新手避坑指南:GPEN镜像使用常见问题全解析

新手避坑指南&#xff1a;GPEN镜像使用常见问题全解析 你刚拉取了 GPEN 人像修复增强模型镜像&#xff0c;满怀期待地想给老照片“焕颜重生”&#xff0c;结果却卡在 conda 环境激活失败、输入路径报错、输出图一片黑、甚至根本找不到推理脚本——别急&#xff0c;这不是你操作…

作者头像 李华
网站建设 2026/6/10 12:10:40

收藏级指南|Agent Skills重塑AI协作:从对话式交互到工业化智能体

过去两年&#xff0c;我们与AI的互动大多局限于“对话框交互”的浅层模式。无论是反复叮嘱AI“按公司编码规范审查这段代码”&#xff0c;还是要求“将原始数据按指定格式整理成周报”&#xff0c;这种依赖“一次性提示词”的工作方式&#xff0c;本质上效率低下且难以规模化落…

作者头像 李华