Saya seorang pemula total WPF dan bertanya-tanya apakah ada yang bisa memberi saya beberapa petunjuk bagaimana menulis aplikasi yang mulai diminimalkan ke baki. Idenya adalah ia mengambil RSS Feed secara berkala dan membuat Toaster-Popup ketika ada feed baru.
Aplikasi masih harus memiliki Jendela Utama (pada dasarnya hanya daftar yang berisi semua entri umpan), tetapi itu harus disembunyikan secara default.
Saya sudah mulai membaca tentang XAML dan WPF dan saya tahu bahwa StartupUri di App.xaml harus mengarah ke jendela utama saya, tetapi saya tidak tahu apa cara yang tepat untuk melakukan ikon SysTray dan menyembunyikan jendela utama (ini juga berarti bahwa ketika pengguna meminimalkan jendela, ia harus meminimalkan ke baki, bukan ke taskbar).
Ada petunjuk?
Jawaban:
Tidak ada NotifyIcon untuk WPF.
Seorang kolega saya menggunakan perpustakaan yang tersedia secara gratis ini untuk efek yang baik:
sumber
Anda harus menggunakan kontrol NotifyIcon dari System.Windows.Forms, atau Anda dapat menggunakan Notify Icon API yang disediakan oleh Windows API. WPF Tidak menyediakan yang setara, dan telah diminta di Microsoft Connect beberapa kali.
Saya memiliki kode pada GitHub yang menggunakan
System.Windows.Forms
Komponen NotifyIcon dari dalam aplikasi WPF, kode tersebut dapat dilihat di https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.csBerikut adalah ringkasan bit:
Buat Jendela WPF dengan ShowInTaskbar = Salah, dan yang dimuat dalam Status yang Tidak Terlihat.
Di tingkat kelas:
Selama OnInisialisasi ():
Selama OnLoaded ():
Dan untuk interaksi (ditampilkan sebagai notifyIcon.Click dan DoubleClick di atas):
Dari sini Anda dapat melanjutkan penggunaan Kontrol WPF dan API seperti menu konteks, jendela sembul, dll.
Sesederhana itu. Anda tidak benar-benar membutuhkan Jendela WPF untuk meng-host ke komponen, itu hanya cara yang paling nyaman untuk memperkenalkan satu ke dalam Aplikasi WPF (karena Window umumnya merupakan titik masuk default yang ditentukan melalui App.xaml), juga, Anda tidak perlu tidak memerlukan WPF Wrapper atau kontrol pihak ke-3, karena komponen SWF dijamin hadir di setiap instalasi .NET Framework yang juga memiliki dukungan WPF karena ini merupakan bagian dari .NET Framework (yang dibuat berdasarkan semua versi .NET Framework saat ini dan di masa mendatang.) Hingga saat ini, tidak ada indikasi dari Microsoft bahwa dukungan SWF akan dihapus dari .NET Framework dalam waktu dekat.
Semoga itu bisa membantu.
Ini adalah keju kecil yang harus Anda gunakan Komponen Kerangka pra-3.0 untuk mendapatkan ikon baki, tetapi dapat dimengerti sebagaimana dijelaskan oleh Microsoft, tidak ada konsep Baki Sistem dalam lingkup WPF. WPF adalah teknologi presentasi, dan Ikon Pemberitahuan adalah konsep Sistem Operasi (bukan "Presentasi").
sumber
Baru-baru ini saya memiliki masalah yang sama. Sayangnya, NotifyIcon hanya Windows.Form mengendalikan saat ini, jika Anda ingin menggunakannya Anda harus memasukkan bagian kerangka itu. Saya kira itu tergantung berapa banyak purist WPF Anda.
Jika Anda ingin cara yang cepat dan mudah untuk memulai periksa kontrol NotifikasiIcon WPF ini pada Proyek Kode yang tidak bergantung pada WinForms NotifyIcon sama sekali. Versi yang lebih baru tampaknya tersedia di situs web penulis dan sebagai paket NuGet . Ini sepertinya cara terbaik dan terbersih untuk saya sejauh ini.
Saksikan berikut ini. Muncul dengan contoh aplikasi yang luar biasa juga, sangat mudah digunakan, dan Anda dapat memiliki popup, tooltips, dan menu konteks WPF gaya Windows Live Messenger. Sempurna untuk menampilkan umpan RSS, saya menggunakannya untuk tujuan yang sama.
sumber