2012-09-12 63 views
1

當應用程序被捕捉時,我可以使用ContactPicker合同嗎?快照時使用ContactPicker合同

var picker = new Windows.ApplicationModel.Contacts.ContactPicker(); 
picker.CommitButtonText = "Select"; 
picker.SelectionMode = Windows.ApplicationModel.Contacts.ContactSelectionMode.Fields; 
picker.DesiredFields.Add(Windows.ApplicationModel.Contacts.KnownContactField.Email); 
var contactInformation = await picker.PickSingleContactAsync(); 

上面代碼工作時在全屏但是當對齊到屏幕的一側引發以下例外上的呼叫以PickSingleContactAsync():

System.Runtime.InteropServices.COMException了未處理由用戶代碼

的HResult = -2147467259

消息=錯誤HRESULT E_FAIL已經從對COM組件的調用返回。

源= mscorlib程序

錯誤碼= -2147467259

堆棧跟蹤: 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務的任務) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務的任務) 在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 在TouchToneDtmf.MainPage.d__e.MoveNext() 在 d:\用戶\富\ MainPage.xaml.cs中:行 556的InnerException:

回答

4

當應用程序被捕捉時它不起作用 - 您應該在調用ContactPicker之前檢查應用程序的可視狀態。

在官方的C#示例中,還有一種方法EnsureUnsnapped(),您可能會在實現此合同時找到有用的方法。

每次調用文件[/聯繫方式]選取器,您必須首先確保您的 應用程序可以通過驗證你的應用程序在沒有搶購 或顯示文件[/聯繫方式]選擇器時,如果您的應用程序是對齊,以便顯示 文件選取器可以將其解除綁定。 Source - How to save files through file pickers

using Windows.UI.ViewManagement; 
//... 
internal bool EnsureUnsnapped() 
{ 
    bool unsnapped = ((ApplicationView.Value != ApplicationViewState.Snapped) || ApplicationView.TryUnsnap()); 
    return unsnapped; 
}