【问题标题】:WPF window layout looks different from VS designer when runningWPF 窗口布局在运行时看起来与 VS 设计器不同
【发布时间】:2013-09-30 18:46:46
【问题描述】:

我最近一直在玩 WPF。我有点困惑,因为我的程序在运行时看起来与我在设计器中创建的不同。

我确信这是有正当理由的,但我无法理解为什么这么基本的东西必须如此“神秘”。

具体来说,我指的是按钮和窗口内边框之间的底部和右边距。

设计师:

运行程序:

希望有人可以帮助解决这个问题。

XAML:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Content="Button" HorizontalAlignment="Left" Margin="432,289,0,0"
            VerticalAlignment="Top" Width="75" RenderTransformOrigin="-1.387,-0.75"/>
</Grid>

【问题讨论】:

  • blend 为您的 xaml 添加设计时属性,stackoverflow.com/questions/75495/…
  • 如我所说,我的意思是按钮和窗口内边框之间的底部和右边距。我将替换第一个屏幕截图。
  • 发布相关的 XAML。 解决方案: 不要使用 Visual Studio 设计器。

标签: .net wpf


【解决方案1】:

我也遇到了这个问题,并为遇到此问题的其他人找到了一个非常简单的解决方案。

  1. 在窗口中放置一个网格,大小随意。
  2. 将窗口高度和宽度设置为自动
  3. 将窗口的SizeToContent设置为WidthAndHeight

Presto,网格是设定的大小,窗口现在将调整大小,无需担心边框或标题栏。

【讨论】:

  • 一旦我遵循了这个建议,设计布局就变得轻而易举。谢谢。
【解决方案2】:

那只是因为:

  1. 有影响设计时间的 d:Width 和 d:Height 以及影响运行时间的 Height 和 Width。因此请验证它们是否相同。
  2. 如果您想保留底部的边距,您必须在 XAML 中指定它或单击底部和右侧的小边距支架。
  3. 除非你有 Expression Blend,否则不要依赖 VS 拖放,而是要编写你自己的 XAML。

这样的事情是非常合乎逻辑的:

 HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,10,10" 

【讨论】:

  • 谢谢!所以 VS 的设计师就是垃圾?!我将您的更改应用于 XAML,现在边距是正确的。我明天将安装 Blend,看看效果是否更好。
  • 根据我的经验,混合拖放总是给我一个更干净的 XAML。尽管我建议您阅读有关布局控件的内容。他们会给你一个漂亮而灵活的用户界面。
  • 谢谢。会这样做。
【解决方案3】:

似乎是边框和顶栏的空间。 将窗口的窗口样式属性更改为无时(WindowStyle="None"), 好像按钮是作为设计器放置的。

VS 认为您希望窗口大小包括边框和标题栏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2012-08-24
    相关资源
    最近更新 更多