WPFトレイを表示

オリジナル: WPFトレイを表示

この記事では、トレイは、メニューを開くために、右クリックすることができながら、WPFでトレイを表示する方法を説明します、指定されたコードを実行するためにダブルクリック

WPF NotifyIcon

あなたはすぐにWPFでNuget Hardcodet.NotifyIcon.Wpf表示トレイをインストールすることによってこれを行うことができます

ここに画像を挿入説明

トレイは、トレイのプログラム、ではないウィンドウであるので、コードが内部App.xaml.csに書き込まれることが推奨されます

トレイ・インターフェースを作成する、インターフェイスがApp.xamlに作成され

トレイアイコンから、必要とされるIconfont-アリババベクトルのアイコンライブラリ格好良いアイコンを見つけること。トレイアイコンに16×16の32ビットのICOファイルである必要があります

ソリューションに写真をダウンロードし、あなたはリソースを変更することができます

App.xaml内のコードを参照してくださいリソースTaskbarIconを定義します

<Application x:Class="HouneaLeabeltezairKayballjachall.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:HouneaLeabeltezairKayballjachall"
             xmlns:tb="http://www.hardcodet.net/taskbar"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <tb:TaskbarIcon x:Key="Taskbar"
                        IconSource="Taskbar.ico">

        </tb:TaskbarIcon>
    </Application.Resources>
</Application>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

上記のコードを交換する必要がありClass="HouneaLeabeltezairKayballjachall.App"、自分のプロジェクトのために

リソースへのApp.xaml.csオープンアクセスは、リソースを取得した場合にのみ作成され、TaskbarIconを作成トレイに表示されます

        protected override void OnStartup(StartupEventArgs e)
        {
            _taskbar = (TaskbarIcon) FindResource("Taskbar");
            base.OnStartup(e);
        }

        private TaskbarIcon _taskbar;

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

画像がアイコン表示さ見ることができるコードを実行し、下の画像は、私のアイコンです

上記トレイに表示テキストにマウスを移動し、コードTaskbarIconに添加してもよいです

        <tb:TaskbarIcon x:Key="Taskbar"
                        ToolTipText="鼠标移动上显示的文字"
                        IconSource="Taskbar.ico">

        </tb:TaskbarIcon>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

あなたはViewModelにバインドコマンドを作成するコマンドを追加する必要があるコードを実行するには、トレイをダブルクリックします

    public class DelegateCommand : ICommand
    {
        public Action CommandAction { get; set; }
        public Func<bool> CanExecuteFunc { get; set; }

        public void Execute(object parameter)
        {
            CommandAction();
        }

        public bool CanExecute(object parameter)
        {
            return CanExecuteFunc == null || CanExecuteFunc();
        }

        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }
    }


  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

いくつかの機能、表示窓、隠されたウィンドウを追加

    public class NotifyIconViewModel
    {
        /// <summary>
        /// 如果窗口没显示,就显示窗口
        /// </summary>
        public ICommand ShowWindowCommand
        {
            get
            {
                return new DelegateCommand
                {
                    CanExecuteFunc = () => Application.Current.MainWindow == null,
                    CommandAction = () =>
                    {
                        Application.Current.MainWindow = new MainWindow();
                        Application.Current.MainWindow.Show();
                    }
                };
            }
        }

        /// <summary>
        /// 隐藏窗口
        /// </summary>
        public ICommand HideWindowCommand
        {
            get
            {
                return new DelegateCommand
                {
                    CommandAction = () => Application.Current.MainWindow.Close(),
                    CanExecuteFunc = () => Application.Current.MainWindow != null
                };
            }
        }


        /// <summary>
        /// 关闭软件
        /// </summary>
        public ICommand ExitApplicationCommand
        {
            get
            {
                return new DelegateCommand { CommandAction = () => Application.Current.Shutdown() };
            }
        }
    }


  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

界面結合コードで

        <tb:TaskbarIcon x:Key="Taskbar"
                        ToolTipText="鼠标移动上显示的文字"
                        DoubleClickCommand="{Binding ShowWindowCommand}"
                        IconSource="Taskbar.ico">

        </tb:TaskbarIcon>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

しかし、今回TaskbarIcon ViewModelには、以下のようにしてあること

        <tb:TaskbarIcon x:Key="Taskbar"
                        ToolTipText="鼠标移动上显示的文字"
                        DoubleClickCommand="{Binding ShowWindowCommand}"
                        IconSource="Taskbar.ico">
            <tb:TaskbarIcon.DataContext>
                <local:NotifyIconViewModel />
            </tb:TaskbarIcon.DataContext>
        </tb:TaskbarIcon>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

今、デフォルトはダブルクリックを確認することがより困難に、開いているため、メインウィンドウメインウィンドウを開くために、それをダブルクリックします。メインウィンドウには、次のコードを見つけるために、App.xamlの必要性ではデフォルトで削除しました

StartupUri="MainWindow.xaml"

  
  
  • 1

今すぐソフトウェアを実行するメインウィンドウのデフォルトを開けないようにしてみてください、あなたはトレイアイコンの表示を見ることができ、ダブルクリックして開くことができるアイコンをインターフェース

あなたは右クリックメニューを表示したい場合は、定義App.xamlを追加する必要があります

        <ContextMenu x:Shared="false" x:Key="SysTrayMenu">
            <MenuItem Header="显示窗口" Command="{Binding ShowWindowCommand}" />
            <MenuItem Header="关闭窗口" Command="{Binding HideWindowCommand}" />
            <Separator />
            <MenuItem Header="退出" Command="{Binding ExitApplicationCommand}" />
        </ContextMenu>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

TaskbarIconのメニューを使用します

        <tb:TaskbarIcon x:Key="Taskbar"
                        ContextMenu="{StaticResource SysTrayMenu}"
                        ToolTipText="鼠标移动上显示的文字"
                        DoubleClickCommand="{Binding ShowWindowCommand}"
                        IconSource="Taskbar.ico">
            <tb:TaskbarIcon.DataContext>
                <local:NotifyIconViewModel />
            </tb:TaskbarIcon.DataContext>
        </tb:TaskbarIcon>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

ViewModelには、すでにコードを書いているので、あなたが実行できるようになりましたので、

ここに画像を挿入説明

デフォルトのソフトウェアの設定は、アプリケーションが閉じているとき、それは、出口を呼び出すApp.ShutdownModeを設定することで閉じることができ、最後のウィンドウが閉じている、App.xamlを開くためのコードを追加します。

 ShutdownMode="OnExplicitShutdown"

  
  
  • 1

この記事のコード

WPFディスプレイトレイ、メニューを開くために右クリックして、ソフトウェアのダウンロード-CSDNを開くにはダブルクリックします

以下は、いくつかの高度な使用にあります。

移動マウストレイ定義されたテキストの色

            <tb:TaskbarIcon.TrayToolTip>
                 里面可以添加控件
            </tb:TaskbarIcon.TrayToolTip>

  
  
  • 1
  • 2
  • 3
        <tb:TaskbarIcon x:Key="Taskbar"
                        ContextMenu="{StaticResource SysTrayMenu}"
                        DoubleClickCommand="{Binding ShowWindowCommand}"
                        IconSource="Taskbar.ico">
            <tb:TaskbarIcon.TrayToolTip>
                <Border
                    Background="White"
                    BorderBrush="Orange"
                    BorderThickness="2"
                    CornerRadius="4"
                    Opacity="0.8"
                    Width="160"
                    Height="40">
                    <TextBlock
                        Text="hello world"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center" />
                </Border>
            </tb:TaskbarIcon.TrayToolTip>
            <tb:TaskbarIcon.DataContext>
                <local:NotifyIconViewModel />
            </tb:TaskbarIcon.DataContext>
        </tb:TaskbarIcon>


  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

それは、このようなボタンを追加するなど、あなたのアイデアを再生するためのコントロールを追加することができますので、

        <tb:TaskbarIcon x:Key="Taskbar"
                        ContextMenu="{StaticResource SysTrayMenu}"
                        DoubleClickCommand="{Binding ShowWindowCommand}"
                        IconSource="Taskbar.ico">
            <tb:TaskbarIcon.TrayToolTip>
                <Border
                    Background="White"
                    BorderBrush="Orange"
                    BorderThickness="2"
                    CornerRadius="4"
                    Opacity="0.8"
                    Width="160">
                   <Grid>
                       <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="可以放文字"></TextBlock>
                       <Button Margin="10,100,10,10" Content="可以放按钮"></Button>
                   </Grid>
                </Border>
            </tb:TaskbarIcon.TrayToolTip>
            <tb:TaskbarIcon.DataContext>
                <local:NotifyIconViewModel />
            </tb:TaskbarIcon.DataContext>
        </tb:TaskbarIcon>


  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

ここに画像を挿入説明

表示バブル

バブルは、次のコードで表示することができます

Taskbar.ShowBalloonTip("标题", "内容", BalloonIcon.Info);

  
  
  • 1

カスタムバブルが必要な場合は、その後、あなたはTaskbarIcon.ShowCustomBalloonを渡すことができ、のUIElementを継承するクラスを定義します

既に定義した通りでFancyBalloonは以下のコードによって、気泡

 FancyBalloon balloon = new FancyBalloon();
 TaskbarIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 4000 /*多少时间就隐藏*/);

  
  
  • 1
  • 2

コード:NotifyIcon WPF -のBitbucket

私は自分のブログの設定https://blog.lindexi.com/の訪問を歓迎し、多くの新しいブログがあります。私はブログの書き込みがCSDNやブログの庭に満期を迎える見ましたが、後にのみリリースされたら、もはや更新を意志

あなたが理解していない任意のブログを参照してください場合は、私が構築され、共有してください職業技術学院はDOTNETの参加を歓迎します

クリエイティブコモンズライセンス
この作品は、ある非営利- -同一条件許諾4.0の国際ライセンス契約クリエイティブ・コモンズのライセンスのために。転載、使用、再投稿、しかしによって署名記事に保つようにしてくださいへようこそリンデ西(リンクを含む:http://blog.csdn.net/lindexi_gdは)、紙のライセンス変更に基づいて、同じ作業を公開するようにしてください、商業目的のために使用してはなりません。ご質問がありましたら、お気軽にしてください連絡先

おすすめ

転載: www.cnblogs.com/lonelyxmas/p/12082172.html