虽然我对事件处理程序有所了解,但对如何强制使用事件处理程序还不够了解。
所以问题是:如何调用我的方法
redrawWidgets();
是否无需每次都手动检查主窗口是否更改大小?
请注意,我没有使用XAML,而是手动编写了GUI,因为我愚蠢地开始了这个项目。下一个我将明确使用XAML。
我的mainWindow如下所示:
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 });
}
}
}
答案 0 :(得分:2)
您不需要自己调用此方法。 Window类已经通过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 :(得分:1)
在窗口的构造函数中,您可以连接到SizeChanged
事件:
SizeChanged += window_SizeChanged;
您将获得一个处理程序方法,可以进行调用。请注意:每当大小更改,更改以及任何原因更改时,此操作都会非常迅速地触发。例如,它会在启动时触发,因为首先要调整窗口的大小。在最小化,最大化,边缘拖动...一切上。