@postya

Как получить доступ к главному окну из другого класса в WPF?

Пишу десктоп приложение.
Есть класс MainWindow.xaml.cs. Это главное окно приложения
У меня есть код , по нажатию на горячую клавишу происходит toggle окна в fullscreen.
Я бы не хотел создавать много кода в одном файле MainWindow.xaml.cs
Надо разбить код на классы
Как можно в другом классе получить параметры окна, чтобы ими можно было манипулировать?
Например создать класс HotKeys.cs и там написать код, который будет ответственен только за горячие клавиши окна

Код для горячей клавиши:

this.ResizeMode = ResizeMode.NoResize;
 this.WindowStyle = WindowStyle.None;
 this.WindowState = WindowState.Maximized;
            
  this.PreviewKeyDown +=
   (s, e) =>
 {                    

                    if (((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt) && Keyboard.IsKeyDown(Key.Enter))
                        
                    {
                       
                        if (this.WindowStyle != WindowStyle.SingleBorderWindow)
                        {
                            this.ResizeMode = ResizeMode.CanResize;
                            this.WindowStyle = WindowStyle.SingleBorderWindow;
                            this.WindowState = WindowState.Normal;                           
                            e.Handled = true;                            
                        }
                        else
                        {
                            this.ResizeMode = ResizeMode.NoResize;
                            this.WindowStyle = WindowStyle.None;
                            this.WindowState = WindowState.Maximized;
                            e.Handled = true;
                        }
                    }
                };


MainWindow.xaml.cs:

namespace Toolkits
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
       
        public MainWindow()
        {
            InitializeComponent();
           
        }
    }
}
  • Вопрос задан
  • 1991 просмотр
Решения вопроса 1
SpacePurr
@SpacePurr
c#, wpf
Передача this в конструктор нового класса.

class HotKeys
{
     private MainWindow window;
     //Конструктор
     public HotKeys(MainWIndow _window)
     {
          window = _window;
     }
}


namespace Toolkits
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
       
        public MainWindow()
        {
            InitializeComponent();
            HotKeys hk = new HotKeys(this);           
        }
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Application.Current.MainWindow
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы