为什么我的标签在中间被剪掉了?WPF C#NET

为什么我的标签在中间被剪掉了?WPF C#NET,c#,wpf,labels,C#,Wpf,Labels,所以就在最近,当我开始摆弄那个蓝条的东西时(图片中的演示) 出于某种奇怪的原因,它开始切断标签。 在这张图片中,您可以看到它显示了操作系统:Win可用RAM等,但它应该显示Windows 8.1和可用RAM“以及确切的数字” 我没有任何堆叠面板或任何覆盖物,我怀疑它与蓝色条有关(图2) 我是WPF的新手 图2^ 正如你所看到的,标签旁边有一个蓝色的条,我开始怀疑是它把事情搞砸了。 是什么导致我的标签被剪掉的 <Page x:Class="TestApplication.systemPa

所以就在最近,当我开始摆弄那个蓝条的东西时(图片中的演示) 出于某种奇怪的原因,它开始切断标签。 在这张图片中,您可以看到它显示了操作系统:Win
可用RAM
等,但它应该显示Windows 8.1和可用RAM“以及确切的数字” 我没有任何堆叠面板或任何覆盖物,我怀疑它与蓝色条有关(图2)
我是WPF的新手

图2^

正如你所看到的,标签旁边有一个蓝色的条,我开始怀疑是它把事情搞砸了。 是什么导致我的标签被剪掉的

<Page x:Class="TestApplication.systemPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:TestApplication"
      mc:Ignorable="d" 
      Background="White"
      d:DesignHeight="350" d:DesignWidth="525"
      Title="systemPage">


    <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="0*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0*"/>
            <ColumnDefinition Width="0*"/>
        </Grid.ColumnDefinitions>
        <StackPanel Name="Stacky" Background="#03a3d2" HorizontalAlignment="Left" Height="350" VerticalAlignment="Top" Width="119" Margin="-262,-59,0,-59" Grid.RowSpan="3"/>
        <Image x:Name="image" HorizontalAlignment="Left" Height="84" Margin="160,13,-260,-97" VerticalAlignment="Top" Width="100" Source="Images/Logo.png" Grid.ColumnSpan="2" Grid.Row="1"/>
        <Label x:Name="osInfo" Content="OS:" HorizontalAlignment="Left" Margin="19,-42,-47,0" VerticalAlignment="Top" Height="26" Width="28" Grid.ColumnSpan="2"/>
        <Label x:Name="ramInfo" Content="Available RAM:" HorizontalAlignment="Left" Margin="19,-21,-108,0" VerticalAlignment="Top" Height="26" Width="89" Grid.ColumnSpan="2"/>
        <Label x:Name="systemHealth" Content="System Diagnose:" HorizontalAlignment="Left" Margin="19,72,-123,0" VerticalAlignment="Top" Height="26" Width="104" Grid.ColumnSpan="2"/>
        <Label x:Name="cpuInfo" Content="CPU:" HorizontalAlignment="Left" Margin="19,0,-54,0" VerticalAlignment="Top" Height="26" Width="35" Grid.ColumnSpan="2"/>
        <Label x:Name="CPUUsage" Content="N/A" HorizontalAlignment="Left" Margin="54,0,-85,0" VerticalAlignment="Top" Height="26" Width="31" Grid.ColumnSpan="2"/>
        <Label x:Name="RAMUsage" Content="N/A" HorizontalAlignment="Left" Margin="108,-21,-139,0" VerticalAlignment="Top" Grid.ColumnSpan="2" Height="26" Width="31"/>
        <Label x:Name="osInfoLabel" Content="N/A" HorizontalAlignment="Left" Margin="47,-42,-78,0" VerticalAlignment="Top" Height="26" Width="31" Grid.ColumnSpan="2"/>
        <Button x:Name="startScanButton" Click="startScanButton_Click" Background="Transparent" BorderThickness="0" Content="Start Diagnose" HorizontalAlignment="Left" Margin="-143,29,0,-61" VerticalAlignment="Top" Width="137" Height="32" Grid.Row="1"/>
        <Label x:Name="connectionStateLabel" Content="N/A" HorizontalAlignment="Left" Margin="77,22,-108,0" VerticalAlignment="Top" Height="26" Width="31" Grid.ColumnSpan="2"/>
        <Label x:Name="networkLabel" Content="Network:" HorizontalAlignment="Left" Margin="19,22,-77,0" VerticalAlignment="Top" Height="26" Width="58" Grid.ColumnSpan="2"/>
        <Label x:Name="diagnoseResultLabel" Content="N/A" HorizontalAlignment="Left" Margin="123,72,-154,0" VerticalAlignment="Top" Grid.ColumnSpan="2" Height="26" Width="31"/>



    </Grid>
</Page>


因为您将控件拖放到表单上,而不是手工编写XAML,所以它被切断了。如果您希望它是动态的,您需要使用适当的布局技术手工制作带有适当布局面板(网格、堆栈面板等)的XAML。设计器生成的代码根本不是动态的。它非常严格。

它被切断了,因为大多数控件的宽度都是固定的。比如说,


去掉
Width
属性(或者将其设置为
Auto
),它就会工作。同时,正如@SledgeHammer所指出的,请用一些布局来制作XAML。

什么对我有用

我从XAMl中删除了这个部分

<Grid.RowDefinitions>
    <RowDefinition/>
    <RowDefinition Height="0*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="0*"/>
    <ColumnDefinition Width="0*"/>
</Grid.ColumnDefinitions>


不知道它做了什么,但我假设它删除了它前面的一些透明墙。

你在标签上设置了一个特定的宽度,这样可以防止标签水平增长。另外,正如@EdPlunkett所说,边距可能是一个问题。我认为你应该首先支持这一点,去掉所有奇怪的边距和设计师吐得到处都是的固定高度和宽度,然后使用堆叠面板和对齐进行布局。只是让人们知道,这不起作用,还是一样。@JohnM.Henreick是否尝试删除
Width=“0*”
?我相信这是你的案子中唯一一件弄乱布局的事。是的,我做了,我也试过让它自动。把我的答案贴在下面。里面没有魔力。你只做了一个只有一行一列的简单网格,这就是我在回答中提到的。从网格列定义中删除
Width