如何设置用户控件的高度和宽度
Posted
技术标签:
【中文标题】如何设置用户控件的高度和宽度【英文标题】:How to set height and width of a UserControl 【发布时间】:2013-02-07 00:54:46 【问题描述】:我在用户控件中设置高度和宽度时遇到问题。我创建了一个新的 WPF 应用程序,它会自动创建 MainWindow.xaml。代码如下所示:
//MainWindow.xaml
<Window x:Class="Project.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>
</Grid>
</Window>
//MainWindow.cs
namespace Project
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
我更改了代码,以便使用 UserControl 而不是 Window,如下所示:
//MainWindow.xaml
<UserControl x:Class="Project.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="350" Width="525">
<Grid>
</Grid>
</UserControl>
//MainWindow.cs
namespace Project
public partial class MainWindow : UserControl
public MainWindow()
InitializeComponent();
为什么不设置高度或宽度?不会那么难的。
【问题讨论】:
【参考方案1】:(如果我犯了命名错误,请原谅,我还在学习 WPF。如果我对此有误,请纠正我。)
用户控件需要添加到某种形式的容器中(StackPanel、Grid、Window,...)。这些容器是通常设置布局的容器,并且它们中的大多数确实考虑了其子元素的设置宽度/高度。 但是,如果没有包含父级,则子级无法正确设置其布局。
如果你想一想,如果不是在窗口中,你希望你的用户控件(与按钮处于同一级别(虽然是一个非常复杂的按钮))向用户显示?
当然,能够为每个 UserControl 创建单独的文件是件好事,但最后,您总是必须在窗口中加载它(如果我错了,请纠正我)。
那么,与其删除主窗口,不如在单独的文件中创建一个new UserControl?
【讨论】:
我想这就是我必须做的。我只是在查看这个名为 Enhance from Code52 (github.com/Code52/Enhance/blob/master/src/Enhance/Features/…) 的扫描应用程序的一些来源,他们使用 UserControls 就像人们使用 Windows 一样,但它可能在他们正在使用的 Pheonix 框架中。 可能是。抱歉,我不能给你一个明确的答案,我对 WPF 还是很陌生 :) 再说一次,操作系统被称为“Windows”,所以你需要一个来显示内容是有道理的 ;) 没问题的人。我决定使用 MVVM 并使用这个 Phoenix 框架。我真的只需要使用 UserControl 而不是 Window。【参考方案2】:第二个示例中的代码甚至不应该编译,因为您在代码隐藏 (Window) 中指定了不同的基类作为 XAML (UserControl)。
假设您将代码隐藏更改为 UserControl(或什么都没有,因为它实际上只会从 XAML 中获取它)大小应该从您在 XAML 中设置的内容中获取,但仅作为初始默认值。要在某处实际显示您的控件,并且将创建实例,可能在 XAML 中,但也可能来自代码。这些实例中的每一个都将使用您在此处设置的宽度和高度创建,但在任何时候都可以覆盖它们:
<local:MainWindow Width="25" Height="100"/>
此时您设置的值现在已经消失了。根据控件实例周围的情况,布局系统中还可以发生许多不同的交互。包含 Panel 或其他元素,以及 Alignment、Margin 和各种其他设置可能会影响控件的实际呈现大小。
【讨论】:
以上是关于如何设置用户控件的高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章