静态对象:管理set方法

时间:2014-10-21 08:32:14

标签: c# events static set observablecollection

我有一个静态的observableCollection。

使用MVVM方法从UI更新。

我怎么能理解什么时候制作mod? (我需要在进行更改时更改布尔标志的值)

这是我的代码:

public static event EventHandler serbatoiDisponibiliPerErogatoriChanged;
private static ObservableCollection<TabSerbatoi> p_serbatoiDisponibiliPerErogatori = new ObservableCollection<TabSerbatoi>();
public static ObservableCollection<TabSerbatoi> serbatoiDisponibiliPerErogatori
{
    get { return p_serbatoiDisponibiliPerErogatori; }
    set
    {
        p_serbatoiDisponibiliPerErogatori = value;
        if (serbatoiDisponibiliPerErogatoriChanged != null)
            serbatoiDisponibiliPerErogatoriChanged(null, EventArgs.Empty);
    }
}

我还试图将一个函数与事件serbatoiDisponibiliPerErogatoriChanged匹配,但它永远不会被调用,因为通过调试,我看到它只在窗口的init处进入set方法。

奇怪的是obeservableCollection已正确更新,但它从未在set方法中传递。

我该怎么办?

更新:

在mot的回答中,我做到了这一点:

void test(object sender, NotifyCollectionChangedEventArgs e)
{
    Debug.WriteLine("test");
}

serbatoiDisponibiliPerErogatori.CollectionChanged += test;

但是,它永远不会被调用......它永远不会进入“测试”功能......为什么?

1 个答案:

答案 0 :(得分:1)

问题是集合没有再次设置,它在内部被修改。 如果要跟踪集合中的添加/删除元素,可以注册CollectionChanged事件。

serbatoiDisponibiliPerErogatori.CollectionChanged += MyEventHandler;