我在用户控件中设置高度和宽度时遇到问题。我创建一个新的 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();
}
}
}
为什么高度或宽度没有被设置?这不可能那么困难。
最佳答案
第二个示例中的代码甚至不应该编译,因为您在代码隐藏(窗口)中指定了不同的基类作为 XAML (UserControl)。
假设您将代码隐藏更改为 UserControl(或者什么都不更改,因为它实际上只会从 XAML 中获取它),则应该从您在 XAML 中设置的内容中获取大小,但仅作为初始默认值。要实际在某处显示您的控件,并且将创建实例,可能是在 XAML 中,但也可能是来自代码。每个实例都将使用您在此处设置的宽度和高度创建,但在任何时候都可以覆盖这些实例:
<local:MainWindow Width="25" Height="100"/>
此时您设置的值现已消失。根据控件实例周围的情况,布局系统中还可以发生许多不同的交互。包含的面板或其他元素以及对齐方式、边距和各种其他设置可能会影响控件的实际呈现大小。
关于wpf - 如何设置 UserControl 的高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006682/