wpf - 如何设置 UserControl 的高度和宽度

标签 wpf xaml height width

我在用户控件中设置高度和宽度时遇到问题。我创建一个新的 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/

相关文章:

css - Phonegap + Galaxy s3 尺寸

html - 使用CSS创建两个等高布局列,并在右侧列内插入三个等高堆叠列

c# - 我如何以编程方式操作 Windows 7 屏幕键盘 osk : Move, 调整大小,删除标题栏/标题

c# - 更改 Canvas 内矩形的比例

wpf - XAML、WPF 和 Windows 8

c# - 字符串未添加到可观察集合 Xamarin Forms

c# - 使用 Material Design 时更改 ListViewItem 背景颜色

html - 显示 flex,使图像与另一列高度相同

wpf - 在 MVVM-light 和 WPF 中切换 View /用户控件的最佳方法是什么?

c# - 带有 SqlServerCe.3.5 的 Entity Framework - 连接异常