WPF表单在某些点之下切断了所有内容

时间:2016-09-06 05:54:59

标签: wpf

我今天刚刚从WinForms切换到WPF。
我现在面临的问题是在某一点之后,当我运行应用程序时,以下所有内容都会被切断(在设计师我看到了一切。

宽度为1920,高度为1080.我使用的是WindowState="Maximized",也许这就是为什么?

我想要创建一个全屏应用程序,但是再次 - 在某一点之后,当我运行应用程序时,下面的所有内容都会被切断 我只想把它们放在任何地方,并让它们留在那里,没什么特别的。所以,也许是一个"网格"不需要?
这是XMAL代码:

<Window x:Class="KodeOS.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:KodeOS"
    mc:Ignorable="d"
    Title="KodeOS" Height="1080" Width="1920" WindowStartupLocation="CenterScreen" WindowState="Maximized" WindowStyle="None">
<Grid>
    <Grid.Background>
        <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/kdroid_wallpaper1.png"/>
    </Grid.Background>
    <Label x:Name="label" Content="KodeOS" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe Print" FontSize="18.667" Margin="10,0,0,0" Foreground="White"/>
    <Label x:Name="label1" Content="by Kamil" HorizontalAlignment="Left" Margin="10,24,0,0" VerticalAlignment="Top" FontFamily="Segoe Print" Foreground="White"/>
    <Button x:Name="button" Content="After here everything will be cut off" HorizontalAlignment="Left" Margin="18,665,0,0" VerticalAlignment="Top" Width="255" RenderTransformOrigin="0.526,-0.807" Height="44"/>
    <Button x:Name="button_Copy" Content="I'm past the cut off zone" HorizontalAlignment="Left" Margin="37,814,0,0" VerticalAlignment="Top" Width="179" RenderTransformOrigin="0.526,-0.807" Height="30"/>

</Grid>

2 个答案:

答案 0 :(得分:1)

基本上,您不会通过定义边距来对齐网格中的内容 - 您需要为标签/按钮分配专用的行和列/无论

例如,这段代码

    <Grid Background="Gray">
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"></ColumnDefinition>
        <ColumnDefinition Width="Auto"></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <Label x:Name="label" Grid.Column="0" Grid.Row="0"  Content="KodeOS" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe Print" FontSize="18.667" Foreground="White"/>
    <Label x:Name="label1" Grid.Column="1" Grid.Row="0"  Content="by Kamil" HorizontalAlignment="Left"  VerticalAlignment="Top" FontFamily="Segoe Print" Foreground="White"/>
    <Button x:Name="button" Grid.Column="0" Grid.Row="1" Content="After here everything will be cut off" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="255" Margin="5" Height="44"/>
    <Button x:Name="button_Copy" Grid.Column="1" Grid.Row="1"  Content="I'm past the cut off zone" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="179"  Margin="5"  Height="30"/>

</Grid>

会产生如下布局: enter image description here

如果您想手动放置对象,可以使用Canvas容器,可以使用Canvas.Left' and Canvas.Top`放置内容

例如:

    <Canvas Background="Gray">

    <Label x:Name="label"  Canvas.Left="25" Canvas.Top="5" Content="KodeOS" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe Print" FontSize="18.667" Foreground="White"/>
    <Label x:Name="label1" Canvas.Left="55" Canvas.Top="55" Content="by Kamil" HorizontalAlignment="Left"  VerticalAlignment="Top" FontFamily="Segoe Print" Foreground="White"/>
    <Button x:Name="button" Canvas.Left="75" Canvas.Top="125" Content="After here everything will be cut off" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="255" Margin="5" Height="44"/>
    <Button x:Name="button_Copy" Canvas.Left="125"  Canvas.Top="205" Content="I'm past the cut off zone" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="179"  Margin="5"  Height="30"/>

</Canvas>

将会是这样的: enter image description here

但通常我不会那样做,因为你无法对窗口大小的变化做出动态反应

答案 1 :(得分:0)

我没有看到任何// Non-managed environment idiom with getCurrentSession() try { factory.getCurrentSession().beginTransaction(); // do some work ... factory.getCurrentSession().getTransaction().commit(); } catch (RuntimeException e) { factory.getCurrentSession().getTransaction().rollback(); throw e; // or display error message } Grid.Row被分配给您的控件,例如Label或Button。网格系统的工作方式有点像Winform中的Table Layout。

通常在网格布局中,您不需要使用RenderTransformOrigin,Margns和Vertical / Horizo​​ntal Alignment对齐元素,只需设置正确的网格布局即可。

您将元素(按钮,标签等)放在网格控件中。 Grid控件的工作方式是根据与这些元素关联的Column / Row值排列所有项目,例如:将Label放入Row = 0,Col = 0,将按钮置于Row = 0,Col = 1)。如果省略这些值,将使用默认的行/列,该值为零。

这意味着,所有元素将基本上重叠,但您已设法根据其他间距属性(如边距/填充等)将它们彼此远离,这是不可能的。