SizeChanged 事件未触发

SizeChanged Event Isn't Firing

所以,我最近一直在研究 SizeChanged 事件,因为我希望我的字体大小按比例缩放,虽然我搜索了很多帖子,但其中 none 对我有用- 我的对象没有开火。

这是我的代码:

private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e) {
    welcomeTitleText.Text = "hi";
}

这甚至不像 window 大小那样使用,它只是更改文本,以确保它正在触发。但是,由于某种原因它不起作用。有什么想法吗?

确保您订阅了该活动。您必须在代码中或 xaml.

中注册事件的处理程序

在代码示例中:

public MainWindow()
{

    // This call is required by the designer.
    InitializeComponent();

    // Add any initialization after the InitializeComponent() call.
    this.SizeChanged += MainWindow_SizeChanged;
}

或 xaml:

<Window     
    x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"        
        mc:Ignorable="d"
    ...
    Loaded="AboutWindow_Loaded">
...

另请注意,有时如果 wpf 的后端认为更改太微不足道,则不会触发 sizeChanged 事件。 See the docs for more details.

提示,您可以尝试将文本包裹在视图框中,这会将其自动调整为最大填充大小。然后你可以限制视图框的大小(即最大宽度,最大高度)(或者它的容器(我建议使用网格,并使用 *(星号)或 pt,more details here 查看列高和行高)实现合理的缩放。例如:

<Viewbox MaxHeight="50">
    <TextBlock>I'm Scaled Text</TextBlock>
</Viewbox>