news 2026/9/29 1:33:41

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/9/28 0:40:58

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

2.8 Docker网络深度解析:Bridge、Host、None、Overlay网络模式实战对比 引言 Docker网络是容器通信的基础。理解不同的网络模式及其应用场景,是构建容器化应用的关键。本文将深入解析Bridge、Host、None、Overlay四种网络模式,帮助你选择适合的网络方案。 一、Docker网络…

作者头像 李华
网站建设 2026/9/28 0:40:28

2.8 将Go HTTP服务器容器化:完整Dockerfile实战案例

将Go HTTP服务器容器化:完整Dockerfile实战案例 引言 将应用容器化是云原生开发的关键步骤。本文将完整演示如何将之前编写的 Go HTTP 服务器容器化,从 Dockerfile 编写到镜像构建、运行测试,让你掌握容器化的完整流程。 一、项目准备 1.1 项目结构 http-server/ ├──…

作者头像 李华
网站建设 2026/9/28 0:40:47

开题报告撰写新思路:通过9款AI写作工具和模板修改技巧提高质量

工具对比速览 工具名称 核心功能 适用场景 效率评分 特色优势 AIBiYe 开题报告生成/降重 中文论文全流程 ★★★★★ 国内院校适配度高 AICheck 初稿生成/格式检查 快速产出框架 ★★★★☆ 结构化输出优秀 AskPaper 文献综述辅助 外文文献处理 ★★★★ 跨…

作者头像 李华
网站建设 2026/9/28 0:39:52

从模糊到清晰,Qwen-Image-Edit-2511细节还原能力实测

从模糊到清晰&#xff0c;Qwen-Image-Edit-2511细节还原能力实测 你有没有试过这样一张图&#xff1a;人物面部轮廓模糊、衣服纹理糊成一片、背景建筑边缘发虚&#xff0c;连文字标题都像隔着一层毛玻璃&#xff1f; 你放大再放大&#xff0c;期待它“突然清晰”——结果只是更…

作者头像 李华
网站建设 2026/9/28 0:40:58

Z-Image-Turbo生产级部署:Supervisor守护不间断

Z-Image-Turbo生产级部署&#xff1a;Supervisor守护不间断 你有没有遇到过这样的场景&#xff1a;深夜赶电商主图&#xff0c;模型刚跑出一张满意的效果&#xff0c;网页突然卡死&#xff1b;刷新后发现服务进程已退出&#xff0c;日志里只有一行“CUDA out of memory”&…

作者头像 李华
网站建设 2026/9/28 0:40:19

网络安全工程师的职业规划?(非常详细),零基础入门到精通,看这一篇就够了

文章目录 前言 一、就业工作岗位众多 网络工程师的个人职业规划 一、网络工程师的职业优势二、网络工程师解读 计算机网络安全工程师怎么发展职业规划 文末福利 前言 网络安全专业网络安全专业就业前景怎么样&#xff1f;有哪些就业方向&#xff1f; 一、就业工作岗位众多…

作者头像 李华