窗口大小调整处理事件

本文关键字:处理事件 调整 窗口大小 | 更新日期: 2023-09-27 18:16:48

我的应用程序的某些元素具有自定义调整大小事件,这些事件都有效。然而,它们被一个案例搞混了:

当鼠标悬停在窗口的边界上,使光标成为调整大小句柄时,单击(但不拖动),元素的大小调整不正确,并且我的处理程序不会被触发。

我找过这样的事件,但找不到任何匹配的。我想简单地为这个事件做一个处理程序,以避免我的元素在调整大小时出现故障。

我正在使用c#/WPF,与。net 4

xaml for the window:

<Window x:Class="XHealth.MainWindow"
    Name="mainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DataGridTemplateSample"
    xmlns:XH="clr-namespace:XHealth"
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
    SizeChanged="update_size"
    Title="XHealth"  Loaded="Window_Loaded" WindowState="Normal" WindowStartupLocation="CenterScreen" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  SizeToContent="WidthAndHeight" WindowStyle="ThreeDBorderWindow"  MinWidth="650" MinHeight="648" Width="Auto"  VerticalAlignment="Top" DataContext="{Binding}" PreviewKeyDown="Window_KeyDown">
事件处理程序:

public void update_size(object sender, RoutedEventArgs e )
{
        if (resultsTab.IsSelected){
          Grid.SetRowSpan(dataGrid1, 2);
          Grid.SetRowSpan(dataGrid2, 2);
        }
}

这个处理程序按预期执行,但是当不拖动resize句柄时不会触发,这使我相信单击resize句柄是另一个事件。

而且,这只发生一次-一旦我的resize处理程序生效,单击resize处理程序没有作用

窗口大小调整处理事件

将我的评论转换成答案:

可以通过在Grid中不放置任何*来解决。

同样,如果Window设置为SizeToContent,则应该只设置SizeToContent=Width,以防止窗口无休止地缩放。

删除所有的事件处理程序的东西,这是hack