Итак, я недавно исследовал событие SizeChanged, потому что я хочу, чтобы мой размер шрифта увеличивался пропорционально, и хотя я просмотрел много сообщений, ни одно из них не работает для меня - мой объект не срабатывает.
Вот мой код:
private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e) {
welcomeTitleText.Text = "hi";
}
Это даже не похоже на размер окна, он просто меняет текст, чтобы убедиться, что он срабатывает. Однако по какой-то причине он не работает. Любые идеи?





Убедитесь, что вы подписаны на событие. Вы должны зарегистрировать обработчик события либо в коде, либо в 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">
...
Также обратите внимание, что иногда событие sizeChanged не срабатывает, если серверная часть wpf считает изменение слишком незначительным. См. Документацию для получения более подробной информации..
Совет: вы можете попробовать обернуть текст в окне просмотра, это автоматически изменит его размер до максимального размера заливки. Затем вы можете просто ограничить размер (т.е. maxwidth, maxheight) окна просмотра (или его контейнера (я бы рекомендовал использовать сетку и видеть высоту столбца и строки с помощью * (звездочки) или pt, подробнее здесь) для достижения разумного масштабирования . Например:
<Viewbox MaxHeight = "50">
<TextBlock>I'm Scaled Text</TextBlock>
</Viewbox>
Вы также назначали его в xaml?