Как я могу вызвать метод, если размер окна изменяется в C # - PullRequest
0 голосов
/ 05 июня 2019

Хотя я немного знаю об обработчиках событий, но недостаточно о том, как им помешать.

Итак, вопрос: как я могу назвать свой метод

redrawWidgets();

без ручной проверки каждый раз, если главное окно изменило размер?

Обратите внимание, что я не использовал XAML, а вместо этого вручную кодировал GUI, так как я тупо начал этот проект. Следующий я определенно сделаю с XAML.

Мое главное окно выглядит следующим образом:

using AlgorithmComparer.src.View.Main;
using System.Windows;
using AlgorithmComparer.src.Model;
using System.Collections.Generic;
using System;
using System.Windows.Threading;

namespace AlgorithmComparer.src.View
{
    public class MainWindow : Window, IView
    {
        ControllerClass _controller;

        private AlgorithmRuntimeView _leftAlgorithmRuntimeView;
        private AlgorithmRuntimeView _rightAlgorithmRuntimeView;
        public MainWindow(ControllerClass controller, AlgorithmRuntimeView leftAlgorithmRuntimeView, AlgorithmRuntimeView rightAlgorithmRuntimeView)
        {
            this._leftAlgorithmRuntimeView = leftAlgorithmRuntimeView;
            this._rightAlgorithmRuntimeView = rightAlgorithmRuntimeView;
            this._controller = controller;
            Title = "Algorithm Comparer";
            Height = 530;
            Width = 800;
            InitLayout();
        }

        public void InitLayout()
        {
            Content = new MainView(_controller, _leftAlgorithmRuntimeView, _rightAlgorithmRuntimeView);
        }

        public int[] getWindowSize()
        {
            return (new int[2] { (int)this.ActualHeight, (int)this.ActualWidth });
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Вам не нужно вызывать этот метод самостоятельно. Windowclass уже предлагает вам эту функциональность с событием SizeChanged. Вы можете использовать этот бит кода, чтобы использовать его:

    YourWindow.SizeChanged += functionName;
    //If you are in your code behind use:
    //this.SizeChanged += functionName;

    private void functionName(object sender, SizeChangedEventArgs e)
    {
        //do what you want to do if size changed 
    }
1 голос
/ 05 июня 2019

В конструкторе вашего окна вы можете подключиться к событию SizeChanged:

SizeChanged += window_SizeChanged;

Вы получите метод-обработчик, с помощью которого вы сможете сделать свой вызов. Имейте в виду: он будет запускать очень быстро всякий раз, когда размер изменяется, меняется и по любой причине изменяется. Например, он будет запускаться при запуске, так как размер окна сначала измеряется. При сворачивании, максимизации, перетаскивании по краям ... все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...