我有一个类,它是一个集合(MapAdapter
),并将一个集合作为构造函数参数.MapAdater在CollectionChanged上添加一个Map对象:
public MapAdapter(UndoRedoCollection undoRedoCollection)
{
this.undoRedoCollection = undoRedoCollection;
this.undoRedoCollection.CollectionChanged += this.OnCollectionChanged;
}
这是我的集合更改事件,其中添加了Map对象:
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
GetMapRules(TurbineUndoRedoCollection);
}
private void GetMapRules(UndoRedoCollection undoRedoCollection)
{
foreach (var item in undoRedoCollection)
{
this.Add(new Map(item));
}
}
我在MapAdapter上有一个属性,用于确定图层在地图上是否可见:
public bool IsLayerVisible
{
get
{
return this.isLayerVisible;
}
set
{
this.isLayerVisible = value;
this.OnPropertyChanged(new PropertyChangedEventArgs("IsLayerVisible"));
}
}
我的Map
课程中有类似的属性。我需要收听IsLayerVisible
上的MapAdapter
媒体资源,并在IsLayerVisible
集合中的每张地图上更改MapAdapter
。原因是我有一个绘制图像并在Map
中传递的控件,它对MapAdater
一无所知,因此我无法控制何时&何时不根据能见度进行绘制。
答案 0 :(得分:1)
如果您帖子的标题提供了关于您尝试执行的操作的任何线索,那么您需要做的就是实现INotifyPropertyChanged
界面并触发PropertyChanged
事件您的财产价值发生变化。
然后,修改Map的构造函数以接受MapAdapter
实例。您不需要在MapAdapter
内保留对Map
的引用,只需使用它来针对PropertyChanged
为MapAdapter
事件连接事件处理程序。
以下是Map
类的外观示例......
public class Map
{
public Map(object item, MapAdapter adapter)
{
...
adapter.PropertyChanged += this.AdapterPropertyChanged;
}
private void AdapterPropertyChanged(object sender, PropertyChangedEventArg e)
{
if (e.PropertyName == "IsLayerVisible")
{
// Do something
}
}
}
然后更新您的GetMapRules
方法......
private void GetMapRules(UndoRedoCollection undoRedoCollection)
{
foreach (var item in undoRedoCollection)
{
this.Add(new Map(item, this));
}
}
}
答案 1 :(得分:1)