在调整主窗口大小后,xaml表单中的对象被加扰(调整大小或隐藏)?

时间:2015-07-21 07:15:42

标签: c# wpf xaml

我在调整app.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>    

2 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为您明确在元素上设置Margin属性。

Margin="277,232,313,0"

这些边距相对于父Grid。所以上面的代码说:

从左侧放置元素277,从顶部放置232,从右侧放置313,从底部放置0。

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

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

答案 1 :(得分:0)

我找到了一个简单的解决方案。当我选择一个像按钮或...这样的对象时,在对象的每个边缘(或网格上)会出现一个小的链接图标(类似于上面的超链接图标)周围)。点击这些图标,您可以将其更改为取消关联已关联状态。现在,当您想要调整主窗口的大小时,您应该执行以下操作: 1.将所有对象移动到表单中所需的新位置。 2.逐个选择对象,然后单击要从该侧减小主窗口宽度或高度的一侧的链接图标。例如,如果要从右/下降低窗口的宽度/高度您应该取消每个“右/下”侧链接图标的链接。 3.根据第2步示例,通过拖动其边缘来调整主窗口的宽度或高度。您可以看到调整大小窗口根本不会影响其他对象。