SizeChanged事件不会被触发

时间:2018-06-12 17:30:35

标签: c# wpf resize screen-resolution

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

这是我的代码:

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

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

1 个答案:

答案 0 :(得分:1)

确保您订阅了该活动。您必须在代码或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

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

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