イベントCollectionChanged
は必要なものだと思います。次のようなことができます。
((ICollectionView)yourListCollectionView).CollectionChanged += handler;
ここでキャストする必要がある理由は、 (はこのインターフェイスから継承)CollectionChanged
のメンバーとして実装されているためです。ソース コードは次のとおりです。INotifyPropertyChanged
ICollectionView
event NotifyCollectionChangedEventHandler INotifyCollectionChanged.CollectionChanged
{
add {
CollectionChanged += value;
}
remove {
CollectionChanged -= value;
}
}
この実装は明示的です。そのため、イベントはパブリック メンバーとして通常のアクセスから隠されています。そのメンバーを公開するには、インスタンスをICollectionView
またはにキャストできますINotifyPropertyChanged
。
. インターフェイスを明示的に実装する場合、インターフェイス メンバーにアクセスする前に、インスタンスをそのインターフェイスに明示的にキャストする必要があります。
インターフェイスの実装に関する例:
public interface IA {
void Test();
}
//implicitly implement
public class A : IA {
public void Test() { ... }
}
var a = new A();
a.Test();//you can do this
//explicitly implement
public class A : IA {
void IA.Test() { ... } //note that there is no public and the interface name
// is required
}
var a = new A();
((IA)a).Test(); //this is how you do it.