如何爲我的WPF應用程序創建通知,例如通過瀏覽器頂部的「工具欄」顯示消息的瀏覽器或通過向上/向下滑動的彈出窗口的「MSN」樣式通知屏幕的右下角。也許一個在應用程序中心淡入/淡出的面板會做到WPF Notifications
回答
你的問題有點含糊,因爲在WPF中,你的選擇真的只受限於你的想象力。
這裏有一些選擇:
的MessageBox
這是最簡單的選擇 - 如果你想通知一條簡單的消息,他必須承認繼續你的用戶,那麼就顯示在MessageBox的消息。
滾你自己的對話框
如果消息框完全不是那麼回事做到這一點,你要顯示更多或不同類型的信息,那麼你可以簡單地創建一個新的窗口,並與ShowDialog()方法打開它,在繼續之前迫使用戶關閉它(確認它)。
狀態欄
如果你只是想傳達的信息,您可以再補充一個StatusBar到您的對話框的底部。我已經鏈接到一個來自SO'er Kent Boogaart的好例子。請注意,您並不僅限於StatusBar中的文本 - 您可以將任何UIElement添加到它,因此您可以擁有圖像,進度條等等。
其它一些面板
你也可以有某種另一個面板(使用你的榜樣,一個StackPanel或者在您的應用程序頂部的東西),有可見性設置爲摺疊除非需要它。例如,您也可以在其中包含一些內容的邊框,在對話框中顯示在其他UIElements的前面。您可以使用PopUp控件。
如果你走「額外面板」路線(這可能聽起來最符合你的要求),那麼使用動畫做一些技巧來爲你的應用增加一點點閃光可能是很好的。諸如將面板滑動到位或者使不透明度動畫等等的東西。如果您將信息放在窗口內容的其餘部分上,則還可以使用不透明度來使面板半透明 - 足夠黑暗以便看到和閱讀,而且還允許用戶看到它背後的一小部分窗口。
下面是我的意思的一個非常基本的例子。我會離開它作爲一個練習,爲用戶添加任何格式,光滑的動畫,同時處理多個郵件等
<Window ...>
<Grid x:Name="gridMainLayout">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel x:Name="stackNotificationArea"
Grid.Row="0"
Orientation="Horizontal"
Background="LemonChiffon"
Visibility="Collapsed">
<TextBlock x:Name="txtMessage"
Text="{Binding NotificationMessage}" />
<Button x:Name="btnAcknowledge"
Content="Acknowledge" />
</StackPanel>
<!-- Rest of your window goes here -->
<Grid x:Name="gridContent"
Grid.Row="1">
<!-- Content of window -->
</Grid>
</Window>
在上面的例子中,我假設有一個屬性叫做NotificationMessage返回最新通知消息。你可以用文本或其他方式對它進行硬編碼。根據是否有任何通知,最好也可以綁定StackPanel的可見性。在任何情況下,您都必須根據需要將StackPanel切換爲可見。正如您所描述的那樣,將其設置爲可見將自動移動窗口的內容。
確認消息被確認時,務必將可見性設置爲摺疊。如果將其設置爲隱藏,則不會顯示StackPanel,但不動產仍將保留(即應用程序頂部會有一個空白區域)。
當然,你可以像你需要在這裏一樣 - 你可以有一個包含所有消息的小列表框,或者一些按鈕來滾動消息,或者一個按鈕來啓動一個包含所有消息的窗口,或...
我認爲狀態欄是一種方式,我認爲我想要的更好的實現方式之一就像通知瀏覽器在阻止彈出窗口時給予的一樣。我該如何在WPF中實現它?我認爲這可能只是需要一些幫助入門。我想我首先需要從窗口頂部向下滑動通知。當發生這種情況時,我認爲最好的是窗口的內容也會下滑。我還希望通知能夠以某種方式進行堆疊,例如,當有多個通知要顯示時。 – 2010-11-04 13:05:36
我希望通知不顯眼,所以對話並不是我想要的,他們確實很容易實現 – 2010-11-04 13:07:41
我會稍微更新一下我的答案以幫助您入門,但我無法爲您設計整個應用程序... – 2010-11-04 13:07:47
- 1. onGoing notifications
- 2. Toastr Notifications in Microsoft.AspNetCore.Mvc
- 3. android list lists notifications
- 4. Notifications not stacking
- 5. ActiveSupport :: Notifications transaction_id
- 6. DateComponents and Notifications Not Showing
- 7. MPMusicPlayerController/AVPlayer,iTunes Match&Notifications
- 8. Chrome Rich Notifications not showing
- 9. android - launchMode = singleTask和Notifications?
- 10. Notifications with ios8 - Pushwoosh + phonegap
- 11. GameCenter Notifications突顯iAd視圖
- 12. iOS Push Notifications with empty aps dictionary
- 13. Sinch APN shouldSendPush Notifications never called
- 14. Titanium Mobile Push Notifications callback not fired
- 15. 如何處理ActiveSupport :: Notifications事件?
- 16. 安裝angular2-notifications後運行lint失敗
- 17. Codename one Android Push Notifications立即被解僱
- 18. 獲得系統級Windows 8 Toast Notifications
- 19. 正常網頁中的Chrome Rich Notifications?
- 20. 爲Windows 8商店應用程序啓用「Toast Notifications」
- 21. rails activesupport notifications - 錯誤的db運行時值
- 22. 可能使用來自常規.Net應用程序的Toast Notifications?
- 23. 如何使用Parse Server Notifications來設置APNS Collapse ID?
- 24. Nativescript。 nativescript-local-notifications總是創建兩個通知
- 25. django-admin的index.html中的錯誤使用django-admin-notifications
- 26. S3 Notifications在其他地區調用sns主題
- 27. POST http://127.0.0.1:8000/notifications/ajax/ 403(FORBIDDEN)//使用ajax + django
- 28. Android - Push Notifications僅在一部手機上顯示
- 29. PhoneGap構建不能構建cordova-plugin-local-notifications
- 30. 是否可以在iOS Interactive Notifications中顯示動作按鈕?
你實際上是在問幾個不同的問題。你想要在你的應用程序窗口(即顯示一個彈出窗口)或系統托盤中的東西嗎? – 2010-11-03 15:11:51
@Wonko the Sane,我想要一個窗口內的東西 – 2010-11-04 10:36:19