2014-04-24 14 views
11

Được rồi vì vậy tôi đang sử dụng ToastNotificationManager mới trong dự án 8.1 SL thay vì ShellToast cũ. ShellToast có NavigationUri trên thông điệp bánh mì nướng làm cho nó thực sự dễ dàng.Các thông số thông báo bánh mì nướng trong Windows Phone 8.1 Silverlight

Trong bánh mì nướng mới, bạn phải chỉ định thông số khởi chạy của chính mình theo this bài viết. Tuy nhiên nó có vẻ như 8.1 SL không có sự kiện OnLaunched (LaunchActivatedEventArgs args) bạn có nghĩa vụ phải lắng nghe trong App.xaml.cs cho các thông số:

Bước 2: Xử lý của ứng dụng "OnLaunched" sự kiện

Khi người dùng nhấp vào bánh mì nướng của bạn hoặc chọn nó qua chạm, ứng dụng được liên kết được khởi chạy, kích hoạt sự kiện OnLaunched của nó.

Lưu ý Nếu bạn không bao gồm chuỗi thuộc tính khởi chạy trong bánh mì nướng và ứng dụng của bạn đã chạy khi bánh mì nướng được chọn, sự kiện OnLaunched sẽ không được kích hoạt.

Ví dụ này hiển thị cú pháp ghi đè sự kiện OnLaunched , trong đó bạn sẽ truy xuất và hành động trên chuỗi khởi chạy được cung cấp qua thông báo bánh mì nướng.

protected override void OnLaunched(LaunchActivatedEventArgs args) 
{ 
    string launchString = args.Arguments 

    .... 
} 

Mã của tôi:

// Using the ToastText02 toast template. 
ToastTemplateType toastTemplate = ToastTemplateType.ToastText02; 

// Retrieve the content part of the toast so we can change the text. 
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); 

//Find the text component of the content 
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text"); 

// Set the text on the toast. 
// The first line of text in the ToastText02 template is treated as header text, and will be bold. 
toastTextElements[0].AppendChild(toastXml.CreateTextNode("Heading")); 
toastTextElements[1].AppendChild(toastXml.CreateTextNode("Body")); 

// Set the duration on the toast 
IXmlNode toastNode = toastXml.SelectSingleNode("/toast"); 
((XmlElement)toastNode).SetAttribute("duration", "long"); 

//Launch params 
string paramString = "{\"type\":\"toast\",\"param1\":\"12345\"}"; 
((XmlElement)toastXml.SelectSingleNode("/toast")).SetAttribute("launch", paramString); 

// Create the actual toast object using this toast specification. 
ToastNotification toast = new ToastNotification(toastXml); 

// Set SuppressPopup = true on the toast in order to send it directly to action center without 
// producing a popup on the user's phone. 
toast.SuppressPopup = true; 

// Send the toast. 
ToastNotificationManager.CreateToastNotifier().Show(toast); 

Bất cứ ai cũng biết làm thế nào để giải quyết này? Cảm ơn

+0

Bạn có thể cung cấp bánh mì nướng với thông số điều hướng trực tiếp. Tôi sẽ nhận được các chi tiết khi tôi trở lại làm việc vào ngày mai. Odd chúng tôi đã không tài liệu này đúng cách. –

+0

Cảm ơn rất mong nhận được nó! :) – robertk

+0

Nếu bạn đang sử dụng ToastNotificationManager trong Silverlight 8.1, bạn đang sử dụng gì thay vì sự kiện OnLoaded vì SL không có trong App.xaml? Tôi có nó trong OnNavigatedTo, nhưng nó có vẻ gọi nó hai lần khi bánh mì nướng được nhấp vào tôi sử dụng câu trả lời cho kích hoạt tải dưới đây. ?? – gcoleman0828

Trả lời

10

Vấn đề của bạn là bạn đang đặt sai thông số launch. Bạn nên đặt nó trực tiếp vào trang bạn muốn điều hướng đến.

var toastNavigationUriString = ""#/MainPage.xaml?param1=12345"; 
var toastElement = ((XmlElement)toastXml.SelectSingleNode("/toast")); 
toastElement.SetAttribute("launch", toastNavigationUriString); 
+0

Điều đó làm việc thực sự tốt đẹp, cảm ơn! – robertk

+1

Bạn cần xác định phương thức void onride onLaunched (LaunchActivatedEventArgs args) được bảo vệ trong ứng dụng WP 8.1 SilverLight ở đâu? (Trong App.xaml.cs nó nói không có phương pháp để ghi đè) –

+3

@ShishirGupta Bạn không, phương pháp đó được sử dụng riêng cho Universal Apps. Đối với Silverlight 8.1, bạn chỉ cần chuyển nó một uri đầy đủ, trực tiếp đến trang bạn muốn nhập, theo ví dụ của tôi. –

Các vấn đề liên quan