Xamarin WPF с пользовательским запуском, выход при ручном вызове mainWindow закрывается - PullRequest
0 голосов
/ 30 мая 2019

Xamarin WPF добавлен в проект Xamarin в Visual Studio Xamarin.Forms.WPF .

Редактируется только проект WPF App.xaml и App.xaml.cs, MainWindow.xaml не изменяется.

Мое намерение простое, приложение Tray, которое позволяет пользователю настроить открытие mainWindow при запуске приложения или вообще не отображать его (только в Tray). Возможно, реализация наивна, а может, не достаточно профессиональна, если Другой способ реализовать это. Пожалуйста, порекомендуйте его.

App.xaml

<Application x:Class="WPFXamarin3.WPF.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WPFXamarin3.WPF"
             Startup="Application_Startup"

App.xaml.css

   public partial class App : System.Windows.Application
    {

        private NotifyIcon _notifyIcon;
        FormsApplicationPage mainWindow;


        private void Application_Startup(object sender, StartupEventArgs e)
        {
            _notifyIcon = new NotifyIcon();
            _notifyIcon.Icon = Icon.ExtractAssociatedIcon(Assembly.GetEntryAssembly().Location);
            _notifyIcon.ShowBalloonTip(1000, null, "AB", ToolTipIcon.None);
            _notifyIcon.Text = "BB";
            _notifyIcon.Visible = true;

            ContextMenu contextMenu1 = new System.Windows.Forms.ContextMenu();
            MenuItem menuItem1 = new System.Windows.Forms.MenuItem();
            menuItem1.Index = 0;
            menuItem1.Text = "Exit";
            menuItem1.Click += new System.EventHandler(this.menuItem1_Click);

            MenuItem menuItem2 = new System.Windows.Forms.MenuItem();
            menuItem2.Index = 1;
            menuItem2.Text = "Close";
            menuItem2.Click += new System.EventHandler(this.menuItem2_Click);


            contextMenu1.MenuItems.AddRange(
                    new System.Windows.Forms.MenuItem[] { menuItem1, menuItem2 });
            _notifyIcon.ContextMenu = contextMenu1;

            mainWindow = new MainWindow();
            mainWindow.Show();

        }

        private void menuItem1_Click(object Sender, EventArgs e)
        {
            System.Windows.Application.Current.Shutdown();
        }

        private void menuItem2_Click(object Sender, EventArgs e)
        {
            mainWindow.Close();
            //mainWindow.Hide();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...