如何设置用户控件的高度和宽度
我在设置用户控件的高度和宽度时遇到问题。我创建一个新的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();
}
}
}
我更改代码,以便我使用的,而不是窗户的用户控件,像这样:
//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();
}
}
}
为什么不高度或宽度越来越组?这并不困难。
您的第二个示例中的代码甚至不应该编译,因为您已将您的代码隐藏(Window)中的不同基类指定为您的XAML(UserControl)。
假设你将代码隐藏改为UserControl(或者没有,因为它实际上只会从XAML中提取它),那么应该从您在XAML中设置的内容中拾取大小,但仅作为初始默认值。要实际在某处显示控件,实例将在XAML中创建,但也可能来自代码。每一个实例将与您在此处设置的宽度和高度来创建,但在任何时候那些可以被覆盖:
<local:MainWindow Width="25" Height="100"/>
此时,您已经设定的值,现在都没有了。根据控制实例周围的情况,布局系统内还可能发生许多不同的交互。包含面板或其他元素以及对齐,边距和各种其他设置可能会影响控件的实际渲染大小。
(请原谅,如果我做一个命名错误,我仍然在学习WPF。请你,如果我错了,这个大家指正。)
用户控件需要某种形式的容器中添加(StackPanel中,网格,窗口...)。这些容器是通常设置布局的容器,并且大多数容器都考虑到子元素的设置宽度/高度。 但是,如果没有包含父项,则该子项的布局设置不正确。
如果你考虑一下,你想怎么让你的用户控件(与按钮位于同一层(虽然是一个非常复杂的按钮))显示给用户,如果不是在窗口中?
当然,能够为每个UserControl创建单独的文件是很好的,但最终,您总是必须将它加载到窗口中(如果我错了,请纠正我)。
因此,不是删除主窗口,而是在一个单独的文件中创建一个新的 UserControl?
我想这就是我可能要做的。我只是想看看这个扫描应用程序的一些源码,这个应用程序叫做Code52 Enhance(https://github.com/Code52/Enhance/blob/master/src/Enhance/Features/ManageDocuments.xaml),他们使用UserControls就像人们使用Windows ,但它可能在他们正在使用的Pheonix框架中。 – 2013-02-21 16:16:41
可能是。对不起,我不能给你一个明确的答案,我还是一个新的WPF以及:)然后再次,操作系统被称为'Windows',所以它的原因是你需要一个显示内容;) – Flater 2013-02-21 16:18:26
没问题的人。我决定去MVVM并使用这个Phoenix Framework。我真的只需要使用UserControl而不是Window。 – 2013-02-21 16:31:05
对不起,错误的基类是一个错字。 – 2013-02-21 18:57:14