WPF-如何获取绑定到 ListBoxItem 的对象

2023-12-28

这就是我想做的。我从数据库获取对象列表并将该列表绑定到 ListBox 控件。 ListBoxItems 由一个文本框和一个按钮组成。这是我想出的。到目前为止,它按预期工作。 该对象有许多属性,如 ID、名称。如果我单击 ListBoxItem 中的按钮,则应从 ListBox 和数据库中删除该项目...

<ListBox x:Name="taglistBox">    
                        <ListBox.ItemContainerStyle>
                            <Style TargetType="{x:Type ListBoxItem}">
                                <Setter Property="HorizontalAlignment" Value="Stretch"/>
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="ListBoxItem">
                                            <ContentPresenter HorizontalAlignment="Stretch"/>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                                <Setter Property="Tag" Value="{Binding TagSelf}"></Setter>
                            </Style>
                        </ListBox.ItemContainerStyle>
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid HorizontalAlignment="Stretch">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <Button Grid.Column="0" Name="btTag"  VerticalAlignment="Center"  Click="btTag_Click" HorizontalAlignment="Left">
                                        <Image Width="16" Height="16" Source="/WpfApplication1;component/Resources/104.png"/>
                                    </Button>
                                    <TextBlock Name="tbtagBoxTagItem" Margin="5" Grid.Column="1" Text="{Binding Name}" VerticalAlignment="Center" />                                        
                                 </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

Textblock.Text 绑定到 object.Name,ListBoxItem.Tag 绑定到 object.TagSelf(它只是对象本身的副本)。

现在我的问题

  1. 如果我单击 listboxItem 中的按钮,如何获取 listboxitem 和绑定到它的对象。为了从数据库中删除该对象,我必须以某种方式检索它。我尝试过类似的东西

    列表框项目 lbi1 =
    (ListBoxItem)(taglistBox.ItemContainerGenerator.ContainerFromItem(taglistBox.Items.CurrentItem)); ObjectInQuestion t = (ObjectInQuestion) lbi1.Tag;

  2. 如果 Itemssource 发生变化,是否有办法自动更新 ListBox 的内容?现在我正在通过以下方式实现这一目标

    taglistBox.ItemsSource = null;
    taglistBox.ItemsSource = ObjectInQuestion;

我很感激你能提供的任何帮助:D 提前致谢


每个 ListBoxItem 将在数据绑定集合中具有相应的项目作为 DataContext。 ListBoxItem.ItemTemplate 中的每个控件都会继承 DataContext。要获取单击按钮后面的对象,您可以在单击事件处理程序中执行以下操作:

MyClass item = (MyClass)(sender as Button).DataContext;

要将数据源中的更改自动更新到列表框,您可以使用 ObservableCollection。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF-如何获取绑定到 ListBoxItem 的对象 的相关文章

随机推荐

  • VisualVM 中加载的类

    我的应用程序的堆内存出现问题 我尝试使用 VisualVM 来查找内存泄漏 有件事我无法理解 在 采样器 选项卡中 当我按下 内存 按钮时 我会看到数千个具有实例的类 如果我在 Profiler 选项卡中执行相同的操作 我会看到更少的类 这
  • 用限制分割字符串,其中最后一个字符串包含余数

    例如如果我运行这个 JavaScript var str hello world there var parts str split 2 var p1 parts 0 var p2 parts 1 最后 p1 包含 hello p2 包含
  • d3.js 中的分层图

    我目前正在使用 Graphviz 来可视化控制流图 基本上 可简化的 控制流图是一个 DAG 加上一些指向前一层中的节点的边 后面的边不应影响节点的放置 现在 dot绘制的图形相当整齐 但它缺乏一种简单的方法来添加交互性 例如折叠 滚动 缩
  • 了解可变 Seq

    我对 Scala 还很陌生 并尝试了解可变的Seq 因为是在包里的mutable我期望有一种方法可以让我们在不复制整个集合的情况下追加元素 但没有 方法中的mutable Seq 但在Buffer is and 两者都复制该集合 那么为什么
  • 注册时出错:NoCredentialProviders:链 ECS 代理错误中没有有效的提供程序

    我正在尝试使用 EC2 容器服务 我使用 terraform 来创建它 我已经定义了ecs集群 自动缩放组 启动配置 一切似乎都有效 除了一件事 ec2 实例正在创建 但它们没有在集群中注册 集群只是说没有可用的实例 在创建的实例上的 ec
  • Xmlstarlet - 将一个属性的值复制到另一个属性(如果元素中存在)

    我刚刚了解了 xmlstarlet 但不幸的是我在 XML 方面遇到了很大的困难 所以我希望我能得到一些帮助 比如说 我有这个 XML 文件 test xml
  • Google Sheet API V4(Java) 在单元格中附加日期

    我尝试在单元格中添加日期 但工作表自动将值存储在带有单引号的字符串中 对于在日期中存储值 我们还尝试添加userEnteredFormat但这对我们不起作用 以下是附加请求 requests appendCells fields userE
  • 如何检查鼠标单击是否位于 JavaScript 中 HTML5 Canvas 上的旋转文本内?

    我已经在画布上以坐标 X Y 绘制了文本并保存了它们 我有一个简单的方法来检查鼠标单击是否发生在文本边界内 问题是当我将文本旋转 45 度时 我无法检查旋转文本中是否发生了鼠标单击 简而言之 如何检查鼠标单击是否在旋转的文本或形状内 创建一
  • 使用固定长度和空格填充格式化整数的正确方法

    我有 0 到 包括 100 范围内的整数 我想将它们转换为固定长度 3 的字符串 并带有空格填充和右侧对齐 我尝试使用以下格式字符串 但它为三位数添加了另一个空格 这使得它们的长度为 4 而不是 3 fmt lambda x 3d form
  • 如何在 java 中使用 org.json.JSONObject 将值设置为 null?

    如何在 java 中使用 org json JSONObject 将值设置为 null 我当然可以使用 isNull 读取值是否为 null 但似乎当我输入 null 时 它只是忽略我 JSONObject o new JSONObject
  • VS2017 RC - 尝试配置 IIS Express 时发生以下错误

    安装了 VS2017 RC 启动了新项目 ASP NET Core Web 应用程序 Net CORE 选择个人用户帐户作为身份验证类型 尝试运行不进行任何更改生成的代码 并收到以下错误 尝试为项目配置 IIS Express 时出错 错误
  • 无法从资源目录加载属性文件

    我从 Git 存储库导入了一个项目 并在 Eclipse 中为其添加了 Maven 性质 在资源文件夹中 我添加了一个名为的配置文件myconf properties 现在 每当我尝试从 Java 代码打开这个文件时 我都会得到FileNo
  • 来自 C# 自定义操作的 MsiSetProperty

    action1如何从 C 自定义操作中设置 MSI 属性 到目前为止我已经有了这个 但如何获取句柄 DllImport msi dll CharSet CharSet Unicode static extern int MsiSetProp
  • 获取VBA中的子目录列表

    我想获取目录中所有子目录的列表 如果这有效 我想将其扩展为递归函数 然而 我最初获取子目录的方法失败了 它只是显示包括文件在内的所有内容 sDir Dir sPath vbDirectory Do Until LenB sDir 0 Deb
  • 第三方应用程序中是否有用于图像编辑的 iOS API?

    从iOS 8开始 图库应用程序可以使用第三方图像编辑工具来编辑照片 是否有 API 允许我自己的应用程序使用相同的第三方应用程序在我的应用程序中进行图像编辑 UIDocumentInteractionController 似乎不允许这样做
  • org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配通配符严格

    org xml sax SAXParseException cvc complex type 2 4 c The matching wildcard is strict but no declaration can be found for
  • 查找未执行的 C++ 代码行

    作为单元测试的一部分 我想确保测试的代码覆盖率 目的是放置类似的东西REQUIRE TEST代码中某处的宏并检查是否所有这些都被调用 void foo bool b if b REQUIRE TEST else REQUIRE TEST v
  • 为什么内置 sum 在“from numpy import *”之后表现错误?

    我有一些代码 例如 import math csv sys re time datetime pickle os gzip from numpy import x 1 2 3 y sum x 实际值的总和x为2165496761 大于32位
  • 如何获取程序文件x86环境变量?

    我想知道如何在命令提示符中显示程序文件 x86 的位置 我使用的是 Windows 7 64 位 我试过了 echo programfiles x86 and echo programfiles 这两个输出C Program Files 当
  • WPF-如何获取绑定到 ListBoxItem 的对象

    这就是我想做的 我从数据库获取对象列表并将该列表绑定到 ListBox 控件 ListBoxItems 由一个文本框和一个按钮组成 这是我想出的 到目前为止 它按预期工作 该对象有许多属性 如 ID 名称 如果我单击 ListBoxItem