窗口调整大小处理事件

时间:2013-06-04 16:27:47

标签: c# .net wpf

我的应用程序的某些元素具有自定义调整大小事件,这些都可以正常工作。然而,他们被一个案件搞砸了:

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

我已经找过这样的活动,但找不到匹配的东西。我想简单地为这个事件创建一个处理程序,以避免对我的元素进行大量调整。

我正在使用带有.NET 4的C#/ WPF

窗口的xaml:

<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);
        }
}

此处理程序按预期执行,但在未拖动调整大小句柄时不会触发,这使我相信单击调整大小句柄是另一个事件。

此外,这只发生一次 - 一旦我的调整大小处理程序生效,单击调整大小句柄无效。

1 个答案:

答案 0 :(得分:2)

将我的评论转换为答案:

这可以通过不在网格中添加任何*来解决。

此外,如果窗口设置为SizeToContent,则只应SizeToContent=Width以防止窗口无限扩展。

删除所有事件处理程序的东西,这就是黑客。