2015-07-21 62 views
0

我在调整app.xaml窗体的主窗口大小时遇到​​问题:调整窗体大小后,表单内的对象(按钮,组合框,文本框等)正在调整大小,隐藏或移动到窗体中的另一个位置。我只是想调整主窗口而不是其他对象。换句话说,我想取消链接这两个(主窗口&其他对象)彼此。在完成之后,我可以调整主窗口大小,然后手动将对象移动到窗体中的新位置。下面给出了表单的代​​码。在调整主窗口大小后,xaml表单中的对象正在被加密(调整大小或隐藏)?

<Window x:Class="WPFClient.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="550" Width="834" MaxHeight="550" MaxWidth="834" MinHeight="550" MinWidth="834"> 
    <Grid> 
     <Grid.Background> 
      <LinearGradientBrush> 
       <GradientStop Color="LightSlateGray" Offset="0"/> 
       <GradientStop Color="White" Offset="0.5"/> 
       <GradientStop Color="LightSlateGray" Offset="0.9"/> 
      </LinearGradientBrush> 
     </Grid.Background> 


     <Label x:Name="loginLabelUName" Height="25" HorizontalAlignment="Left" Margin="179,200,0,0" VerticalAlignment="Top" Width="70">User Name: 
     </Label> 
     <TextBox x:Name="loginTxtBoxUName" Height="23" Margin="277,200,313,0" VerticalAlignment="Top" /> 
     <Label x:Name="loginLabelIP" HorizontalAlignment="Left" Margin="179,232,0,255" Width="70">Service IP:</Label> 
     <TextBox x:Name="loginTxtBoxIP" Margin="277,232,313,0" Text="41.235.135.104" Height="23" VerticalAlignment="Top" /> 
     <Button x:Name="loginButtonConnect" Background="Transparent" Margin="277,0,313,222" Click="buttonConnect_Click" Height="23" VerticalAlignment="Bottom">Connect</Button> 
     <Label x:Name="loginLabelStatus" Height="44" VerticalAlignment="Bottom" FontFamily="Jokerman" FontSize="20" Foreground="White" HorizontalAlignment="Right" Width="167" Margin="0,0,40,71">Offline</Label> 
     <ComboBox x:Name="loginComboBoxImgs" HorizontalAlignment="Right" Margin="0,200,197,222" Width="98" Background="Transparent" /> 
     <Label x:Name="loginLabelTitle" Height="57" FontFamily="Jokerman" FontSize="25" Foreground="White" Margin="16,16,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="293">WCF/WPF Chat App.</Label> 
<Polyline x:Name="loginPolyLine" StrokeThickness="2" Stroke="White" Points="140,90 140,300 700,300 700,90 140,90" Margin="-9,42,116,165" /> 



     <ListBox x:Name="chatListBoxMsgs" Margin="10,62,167,84" /> 
    <ListBox x:Name="chatListBoxNames" HorizontalAlignment="Right" Margin="0,62,10,84" Width="139" /> 
    <CheckBox x:Name="chatCheckBoxWhisper" Height="15" HorizontalAlignment="Right" Margin="0,37,10,0" VerticalAlignment="Top" Width="120" Foreground="White" FontSize="12">Whisper Mode</CheckBox> 
    <TextBox x:Name="chatTxtBoxType" Height="39" Margin="10,0,313,9" VerticalAlignment="Bottom" /> 
    <Button x:Name="chatButtonSend" Click="chatButtonSend_Click" Height="39" Margin="0,0,167,9" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="136">Send</Button> 
    <Button x:Name="chatButtonDisconnect" Click="chatButtonDisconnect_Click" Height="39" HorizontalAlignment="Right" Margin="0,0,10,9" VerticalAlignment="Bottom" Width="139">Disconnect</Button> 
    <Image x:Name="chatCurrentImage" HorizontalAlignment="Left" Margin="10,0,0,0" Stretch="Fill" Width="60" Height="70" VerticalAlignment="Top" /> 
    <Label x:Name="chatLabelCurrentUName" Height="23" HorizontalAlignment="Left" Margin="87,10,0,0" VerticalAlignment="Top" Width="85" Foreground="White"></Label> 
    <Label x:Name="chatLabelCurrentStatus" Height="23" Margin="87,37,0,0" VerticalAlignment="Top" Foreground="Green" HorizontalAlignment="Left" Width="85"></Label> 
    <Label x:Name="chatLabelWritingMsg" Height="30" Margin="10,0,167,49" VerticalAlignment="Bottom" Foreground="Gray"></Label> 
    <Button x:Name="chatButtonSendFile" Click="chatButtonSendFile_Click" Background="Transparent" Height="23" Margin="270,10,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="105">Send File</Button> 
    <Label x:Name="chatLabelSendFileStatus" Height="28" Margin="270,32,316,0" VerticalAlignment="Top"></Label> 
    <Button x:Name="chatButtonOpenReceived" Click="chatButtonOpenReceived_Click" Background="Transparent" Height="23" Margin="382,10,313,0" VerticalAlignment="Top">Open Received Files</Button> 



    </Grid> 
</Window>  
+0

您是否听说过wpf中的相对大小[Relative](http://wpf.2000things.com/tag/star-sizing/)和[Relative sizing](http://www.codeproject.com/)文章/ 30904/WPF-Layouts-A-Visual-Quick-Start)可能会有所帮助 –

回答

0

发生这种情况的原因是因为您明确地为您的元素设置了Margin属性。

Margin="277,232,313,0" 

这些利润率是相对于母公司Grid。所以上面的代码说:

将元素277从左边,从顶部232,从右边313和从底部0。

因此,当Grid得到调整大小时,这些边距将被重新计算,从而搞砸了元素的位置。

为了解决这个问题,你应该考虑使用相对于的定位。已经有了这个问题的答案here

0

我发现了一个简单solution.when余像选择按钮或...的物体,小链路图标(类似于上述超链接图标)出现在所述对象的每个边缘(或在网格上在其周围)。通过点击这些图标,可以将它们更改为未链接链接情况。现在,当您要调整主窗口大小时,应该执行以下操作: 1.将所有对象移动到窗体中您想要的新位置。 2.一个接一个地选择对象,然后单击想要减小主窗口宽度或高度的侧边的链接图标。例如,如果要从右侧/右侧减小窗口的宽度/高度,在下侧,你应该取消链接每个“右/下”侧链接图标。 3.根据第二步示例,通过拖动边缘来调整主窗口的宽度或高度。你可以看到大小调整窗口根本不影响其他对象。