使用するすべてのMailItemのモデルを保存する必要があります。これについては、次のように書いています。MailItemを一意に識別する
private readonly static Dictionary<string, PermitCustomPaneViewmodel> ViewmodelLookup = new Dictionary<string, PermitCustomPaneViewmodel>();
public static PermitCustomPaneViewmodel CreateOrGet(MailItem c)
{
if (c.EntryID == null)
c.Save();
if (!ViewmodelLookup.ContainsKey(c.EntryID))
{
var vm = new PermitCustomPaneViewmodel(c);
c.Unload +=() => ViewmodelLookup.Remove(c.EntryID);
ViewmodelLookup.Add(c.EntryID, vm);
}
return ViewmodelLookup[c.EntryID];
}
モデルがすでに存在する場合は、それを探して返します。作成されていない場合は作成し、MailItemをアンロードした後にそのエントリを削除します。
ただし、アンロードが呼び出されるまで、MailItem
オブジェクトは常にvailidされていないことがわかりました。 MailItemを確実に識別するために、私はEntryID
を使用しました。この問題は、Itemが保存されている場合にのみ有効です。
現在、EntryID
が見つからない場合、アイテムを保存します。しかし、これは自動的にアイテムをドラフトの下に保存します。
MailItem
の方法は保存されていないので、Dictionary<,>
で使用できます。
[UserProperty](https://www.add-in-express.com/creating-addins-blog/2011/08/19/how-to-add-a-custom-property)を作成して設定することができますユニークなIDを格納するためのユーザプロファイル(電子メールアイテムイン・アウトルック)/)を含む。 –
UserPropertyをパースするためにアイテムを保存する必要はありませんか? – lokimidgard
メールアイテムがユーザーによって保存および保存されない場合、IDは未使用のままです。しかし、これは問題ではありません。 –