だから私は少し問題があります。どれだけうまく説明できるか見てみます。
Windows Phone のフォアグラウンド アプリとバックグラウンドの間でリンクとして共有されるクラスがあります (両方とも同じファイルを使用します)。これは、データがこのクラスからシリアル化されて渡されるためです。
フォアグラウンド プロセスでは、IEquatable を使用して GetHash と Equals をオーバーライドできるようにしたいので、ItemModel で ObservableCollection.Remove を呼び出すと、参照に基づいて削除されず、選択したアイテムを削除するときにプロパティを手動で比較できます。別のリストから (つまり、2 つの同一のアイテムがそれぞれメモリ内に独自のスポットを持っている)。
テストしたところ正常に動作しましたが、Windows ランタイム インターフェイスに IEquatable を実装できません (とにかくよくわかりませんが、問題ありません) "Error 10 Type 'Project.ViewModels.ItemModel ' implements interface 'System.IEquatable' 、これは Windows ランタイム インターフェイスではありません。エクスポートされた型によって実装されるすべてのインターフェイスは、Windows ランタイム インターフェイスである必要があります。」
そのため、フォアグラウンド プロセスでは IEquatable が許可されますが、バックグラウンドでは許可されませんが、リンクされたファイルを使用しているためです。バックグラウンド プロジェクトでこのクラスの複製を作成し、IEquatable を実装しないのはなぜですか? 2 つのクラスがまったく同じように定義されていないときに、データのシリアライズとデシリアライズで問題が発生し始めたからです。
public class ItemModel: INotifyPropertyChanged, IEquatable<ItemModel>