gpt4 book ai didi

c# - Silverlight4 + C# : Using INotifyPropertyChanged in a UserControl to notify another UserControl is not notifying

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:10 27 4
gpt4 key购买 nike

我在一个项目中有多个用户控件,其中一个从 XML 中检索项目,创建“ClassItem”类型的对象,并应通知其他用户控件有关这些项目的信息。

我为我的对象创建了一个类(所有项目都将具有的“模型”):

public class ClassItem
{
public int Id { get; set; }
public string Type { get; set; }
}

我有另一个类,用于在创建“ClassItem”类型的对象时通知其他用户控件:

public class Class2: INotifyPropertyChanged
{
// Properties
public ObservableCollection<ClassItem> ItemsCollection { get; internal set; }

// Events
public event PropertyChangedEventHandler PropertyChanged;

// Methods
public void ShowItems()
{
ItemsCollection = new ObservableCollection<ClassItem>();

if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("ItemsCollection"));
}
}
}

数据来自 XML 文件,该文件经过解析以创建 ClassItem 类型的对象:

void DisplayItems(string xmlContent)
{
XDocument xmlItems = XDocument.Parse(xmlContent);

var items = from item in xmlItems.Descendants("item")
select new ClassItem{
Id = (int)item.Element("id"),
Type = (string)item.Element("type)
};

}

如果我没记错的话,这应该是解析 xml 并为它在 XML 中找到的每个项目创建一个 ClassItem 对象。因此,每次创建一个新的 ClassItem 对象时,这应该为“绑定(bind)”到 Class2 中定义的“ItemsCollection”通知的所有 UserControl 触发通知。

然而 Class2 中的代码似乎甚至没有运行 :-( 当然也没有通知...

我所做的任何假设都是错误的,还是我遗漏了什么?任何帮助将不胜感激!

谢谢!

最佳答案

必须访问该属性才能使通知生效。我在代码中没有看到您将值设置为“ItemsCollection”的任何地方。

我通常遵循这种模式:

  public ObservableCollection<ClassItem> ItemsCollection
{
get
{
return _itemsCollection;
}
set
{
_itemsCollection= value;
NotifyPropertyChanged("ItemsCollection");
}
}

然后更新 ItemsCollection。

    //before using the ObservableCollection instantiate it.
ItemsCollection= new ObservableCollection<ClassItem>();

//Then build up your data however you need to.
var resultData = GetData();

//Update the ObservableCollection property which will send notification
foreach (var classItem in resultData)
{
ItemsCollection.Add(classItem);
}

关于c# - Silverlight4 + C# : Using INotifyPropertyChanged in a UserControl to notify another UserControl is not notifying,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842583/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com