如何强制 ListBox 重新加载 ListBoxItems 的属性

2024-02-15

有什么方法可以强制 ObservableCollection 触发 CollectionChanged 吗?

我有一个 ObservableCollection 对象ListBox项目源,因此每次我向集合中添加/删除项目时,ListBox 都会相应更改,但是当我更改集合中某些对象的属性时,ListBox 仍然呈现旧值。

即使我确实修改了一些属性,然后向集合添加/删除对象,也没有任何反应,我仍然看到旧值。

还有其他方法可以做到这一点吗?我找到了接口 INotifyPropertyChanged,但我不知道如何使用它。


我同意马特上面的评论。这里有一小段代码展示了如何实现 INotifyPropertyChanged。

===========
代码隐藏
===========

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Data;
using System.Windows.Documents;

namespace WpfApplication1
{   
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        Nicknames names;

        public Window1()
        {
            InitializeComponent();
            this.addButton.Click += addButton_Click;
            this.names = new Nicknames();
            dockPanel.DataContext = this.names;
        }

        void addButton_Click(object sender, RoutedEventArgs e)
        {
            this.names.Add(new Nickname(myName.Text, myNick.Text));
        }
}
public class Nicknames : System.Collections.ObjectModel.ObservableCollection<Nickname> { }

public class Nickname : System.ComponentModel.INotifyPropertyChanged
{
    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
    void Notify(string propName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propName));
        }
    }

    string name;
    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            Notify("Name");
        }
    }
    string nick;
    public string Nick
    {
        get { return nick; }
        set
        {
            nick = value;
            Notify("Nick");
        }
    }
    public Nickname() : this("name", "nick") { }
    public Nickname(string name, string nick)
    {
        this.name = name;
        this.nick = nick;
    }

    public override string ToString()
    {
        return Name.ToString() + " " + Nick.ToString();
    }
  }
}

XAML

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
    <DockPanel x:Name="dockPanel">
        <TextBlock DockPanel.Dock="Top">
        <TextBlock VerticalAlignment="Center">Name: </TextBlock>
        <TextBox Text="{Binding Path=Name}" Name="myName" />
        <TextBlock VerticalAlignment="Center">Nick: </TextBlock>
        <TextBox Text="{Binding Path=Nick}" Name="myNick" />
        </TextBlock>
        <Button DockPanel.Dock="Bottom" x:Name="addButton">Add</Button>
        <ListBox ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" />
    </DockPanel>
</Grid>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 ListBox 重新加载 ListBoxItems 的属性 的相关文章

随机推荐

  • 使用 JSF 页面中的参数调用 bean 方法

    是否可以调用 bean 方法并直接从视图向它们传递参数 而不需要首先设置 bean 属性 然后使用 commandButton 或类似的方法调用不带参数的方法 我有一个项目列表 每个项目都有一个操作列表 为了减少状态 我使用单个素面remo
  • 为 Spring MVC 应用程序编写 Junit 测试,该应用程序内部依赖于 ContextLoader.getCurrentWebApplicationContext()

    我正在尝试为我们的 spring mvc 应用程序中的控制器编写集成测试 控制器调用一个服务类 该服务类又调用一个 dao 从存储库中读取 写入数据 DAO 需要查找一些配置 配置 bean 在 WEB INF applicationCon
  • iTextsharp 中的多表列对齐

    我正在创建一个表 其中每列都有自己的对齐方式 如下所示 如何在列级别而不是单元格级别完成它 iText 和 iTextSharp 不支持列样式和格式 做到这一点的唯一方法就是像您当前正在做的那样 逐个单元地进行 EDIT 最简单的解决方法是
  • “Timer”上的错误是“System.Windows.Forms.Timer”和“System.Threading.Timer”之间的引用不明确

    我遇到过这个 NET编译时错误 如下所示 Timer is an ambiguous reference between System Windows Forms Timer and System Threading Timer 它是在我为
  • Scala:收集不可变状态的更新/更改

    我目前正在尝试将更实用的编程风格应用于涉及低级 基于 LWJGL GUI 开发的项目 显然 在这种情况下 有必要携带大量状态 而这些状态在当前版本中是可变的 我的目标是最终拥有一个完全不可变的状态 以避免状态更改带来的副作用 我研究了 sc
  • 上传图片至 Facebook

    我正在尝试将图像上传到 Facebook 粉丝页面上的画廊 这是迄今为止我的代码 ch curl init data array type gt client cred client id gt app id client secret g
  • 批处理文件:返回调用者?

    相当于什么return批处理文件子程序的语句 It is goto eof 对于习惯普通编程语言的人来说 这是不寻常的 这是可以理解的 我找到了这个信息here http www robvanderwoude com call php
  • 使用 pugixml 将现有 xml_node 附加到另一个节点

    如何追加现有的pugi xml node使用 pugixml 进入另一个 我知道的唯一功能是 pugi xml node node root append child child 您应该使用此处描述的克隆功能 http pugixml or
  • 如何让 BOOST_TEST_MESSAGE 显示在屏幕上?

    我正在摸索着 Boost 单元测试框架 并建立了一个基本的功能单元测试 我在用着BOOST TEST MESSAGE让用户知道哪些测试正在运行 但消息不会显示在屏幕上 例如 define BOOST TEST MODULE MyTest i
  • Mysql 从日期时间中剥离时间部分

    我需要在 Mysql 中进行日期比较 而不考虑时间部分 即我需要将 2008 11 05 14 30 00 转换为 2008 11 05 目前我正在这样做 SELECT from days to days my date 有没有正确的方法来
  • 如何获取 woocommerce 国家/地区选择下拉菜单?

    我想在网站上的某些位置显示 woocommerce 国家 地区列表 我如何获得像这样的国家 地区列表作为图像 是的 您可以通过在您想要的任何地方添加以下代码来实现此目的 global woocommerce countries obj ne
  • 无法在 Ubuntu 10.04 上安装 rJava 0.9

    我使用 Ubuntu 10 04 的 CRAN apt 存储库中的 R 2 13 并且我正在尝试安装 Deducer 它需要 JGR rJava 但 rJava 拒绝构建 安装 抱怨无法构建 JNI 应用程序 我试过sudo R CMD j
  • 如何指定用户拥有通过 docker-compose 配置创建的卷?

    我有以下内容docker compose yml version 3 7 services xxx container name xxx image xxx volumes config some mountpoint user 1000
  • 如何在 ASP 形式的 MVC Core 上使用日期选择器

    在我的 MVC 核心 Web 应用程序中 我没有在所有浏览器上看到日期选择器 因此我想使用 jQuery 日期选择器 目前在我的模型中我有 Required Display Name RegisterDate DisplayFormat A
  • 使用 dplyr contains() 根据多个字符串选择列

    我想根据名称选择多个列regex表达 我正在尝试使用管道语法来做到这一点dplyr包裹 我检查了其他主题 但只找到了有关单个字符串的答案 以 R 为基数 library dplyr mtcars grepl m ar names mtcar
  • Spring Boot + Eclipse + Weblogic 12.2.1

    当我通过 Eclipse Neon 在 weblogic 12 2 1 中部署 Spring Boot 应用程序时遇到问题 这是组件 具有 Web 依赖的简单 Spring Boot 应用程序 日食霓虹灯 Weblogic 12 2 1 1
  • 如何在 Android 上重置 viewpager 内容?

    请告诉我如何在 android 上重置 ViewPager 的内容 我尝试调用adapter notifyDataSetChanged 但当我滚动视图时适配器不会调用getItem position 它总是返回旧的子视图 更新 这是我的片段
  • Python 继承中共享类变量

    我对Python继承中的变量共享概念感到困惑 考虑以下代码 class a object var1 0 var2 def print var self print self var1 print self var2 class b a cl
  • 图论中的盒子堆叠

    请帮我找到解决这个问题的好方法 我们有 n 个 3 维的盒子 我们可以调整它们的方向 并且希望将它们放在另一个之上以获得最大高度 如果两个尺寸 宽度和长度 小于下面盒子的尺寸 我们可以将一个盒子放在另一个盒子的顶部 例如 我们有 3 个维度
  • 如何强制 ListBox 重新加载 ListBoxItems 的属性

    有什么方法可以强制 ObservableCollection 触发 CollectionChanged 吗 我有一个 ObservableCollection 对象ListBox项目源 因此每次我向集合中添加 删除项目时 ListBox 都