2011-10-04 86 views
4

我有一个窗口,我已经设置ResizeMode = NoResize并摆脱所有的标题栏和按钮,但问题是当窗口被拖动到它最大化的屏幕的顶部,我无法阻止它。有没有人在我的代码最大化之前面对这个问题,并将窗口最小化到一定的宽度和高度。如何禁用窗口自动最大化?

这是一个示例代码

<Window xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 
    x:Class="Custom_title_bar.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" WindowStyle="None" AllowsTransparency="True" 
    Background="Transparent" mc:Ignorable="d" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    ResizeMode="NoResize" 
    MinHeight="180" MinWidth="180" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen" 
    VerticalContentAlignment="Center" VerticalAlignment="Top" WindowState="Normal"> 
<Grid Name="Main" > 
    <Border Name="MainWindow" CornerRadius="1" Background="White" 
    BorderBrush="AliceBlue" MouseDown="move_window" > 
     <Grid> 
     <DockPanel> 
      <DockPanel DockPanel.Dock="Top" Height="26"> 
       <Border CornerRadius="1"> 
       <Border.Background> 
        <LinearGradientBrush> 
         <GradientStop Color="White" Offset="0.0"/> 
         <GradientStop Color="BurlyWood" Offset="0.25"/> 
         <GradientStop Color="Bisque" Offset="0.5"/> 
         </LinearGradientBrush> 
        </Border.Background> 
       <Grid> 
        <DockPanel> 
        <Image MouseDown="MINIMIZE" 
        Source="/Custom%20title%20bar;component/Images/minimize.png" 
        Grid.ColumnSpan="4" /> 
        <Image MouseDown="MAX_RESTORE" 
         Source="/Custom%20title%20bar;component/Images/Restore.png"     
         Grid.ColumnSpan="4" /> 
         <Image MouseDown="EXIT" 
         Source="/Custom%20title%20bar;component/Images/close.png" /> 
         <TextBlock/> 
        </DockPanel> 
       </Grid> 
      </Border> 
     </DockPanel> 
     </DockPanel> 
     </Grid> 
    </Border> 
    </Grid> 

+0

能告诉你什么是MOUSE_MOVE()呢?你的Windows版本是什么? –

+0

正在使用user32.dll函数,但将其更改为this.DragMove它帮助我解决了这个问题。 –

回答

3

为什么不把你的MaxHeight/MaxWidth属性?

由于您的默认大小似乎SizeToContent="WidthAndHeight",它可能是最好设置MaxHeight/MaxWidthLoaded事件您Window

this.MaxHeight = this.ActualHeight; 
this.MaxWidth = this.ActualWidth; 
+0

谢谢我解决了它,但有点不同的方式,然后你做了高度和宽度的本地属性,并得到ActualHeight,然后当它最大化使用System.Windows.SystemParameters.MaximizedPrimaryScreenWidth和高度调整它。再次感谢你的帮助。 –