web-dev-qa-db-ja.com

WPFでNotifyIconを使用できますか?

WPFを使用してシステムトレイへのアプリケーションを最小化したい。 「NotifyIcon」はこの結果を達成する唯一の方法ですか?はいの場合、WPFで「NotifyIcon」を使用するにはどの名前空間が必要ですか?

「NotifyIcon」で可能な場合は、ヒントを提供してください。メインウィンドウでそれをどのように使用できますか?

私のメインウィンドウは、

public partial class MonthView : MetroWindow
{

    public DateTime SelectedDate { get; set; }

    public MonthView()
    {

            InitializeComponent();
            calMain.DisplayDate = DateTime.Today;
            Globals._globalController = new AppController();
            Globals._globalController.appTaskManager.setupLocal();
            Globals._globalController.setMonthViewWindow(this);

    }

    public void calItemSelectedDate(object sender, SelectionChangedEventArgs e)
    {
        DateTime d;
        if (sender is DateTime)
        {
            d = (DateTime)sender;
        }
        else
        {
            DateTime.TryParse(sender.ToString(), out d);
        }

        SelectedDate = d;

        ShowActivity(d);
     }

    public void ShowActivity(DateTime date)
    {
        DayView Activity = new DayView(date);
        Activity.Show();
        this.Hide();
    }

    private void SetButton_Click(object sender, RoutedEventArgs e)
    {
        SettingsView set = new SettingsView();
        set.Show();
        this.Hide();
    }

 }
13
Dinesh

NotifyIconはフォームとは異なり、WPFには実装されていませんが、WindowsフォームNotifyIconSystem.Windows.Forms名前空間に存在します。

これらのチュートリアルを見てください。それらはあなたのニーズをカバーするかもしれません:

NotifyIconを直接使用する簡単なソリューション: http://www.abhisheksur.com/2012/08/notifyicon-with-wpf-applications.html

より高度なソリューション、NotifyIconに基づく新しいライブラリ、より多くの機能: http://www.codeproject.com/Articles/36468/WPF -NotifyIcon

NotifyIconの詳細については、こちらをご覧ください: http://msdn.Microsoft.com/en-us/library/system.windows .forms.notifyicon.aspx

23
Jesper Jensen

App.xaml.csでNotifyIconのコードを設定できます

using System.Drawing;

namespace DDD
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        System.Windows.Forms.NotifyIcon nIcon = new System.Windows.Forms.NotifyIcon();
        public App()
        {
            nIcon.Icon = new Icon(@"path to ico");
            nIcon.Visible = true;
            nIcon.ShowBalloonTip(5000, "Title", "Text",  System.Windows.Forms.ToolTipIcon.Info);
            nIcon.Click += nIcon_Click;
        }

        void nIcon_Click(object sender, EventArgs e)
        {
            //events comes here
            MainWindow.Visibility = Visibility.Visible;
            MainWindow.WindowState = WindowState.Normal;
        }
    }
}

そして、Mainwindow.xaml.csで:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true;
        this.Visibility = Visibility.Hidden;
    }

Window_Closingがメインウィンドウのcloseイベントにバインドされていることを確認してください。

メインウィンドウを「閉じる」と、ウィンドウの可視性は非表示に設定されますが、アプリは引き続き実行されます。通知領域のNotifyIconをクリックするだけで、ウィンドウが戻ります。

9
Stef Geysels

はい、それは可能であり、私は個人的なプロジェクトで成功してそれを使用しました。 Philip Sumiが書いた優れたコントロール http://www.hardcodet.net/projects/wpf-notifyicon があります。私は正確にそれを使用しました、そしてそれは本当に素晴らしく機能し、ニース(主観的)に見えます。

image

ただ注意してください:ライセンス条項に注意を払い、それをyourプロジェクトで使用できるかどうか確認してください。

7
Tigran