gpt4 book ai didi

WPF/XAML - 文本可以自动调整大小吗?

转载 作者:行者123 更新时间:2023-12-02 03:28:38 27 4
gpt4 key购买 nike

对于固定大小的可换行文本区域,有没有办法根据文本量使字体大小尽可能大?

例如,如果您有一个 500x500 的区域,其中包含文本“Hello”,则字体大小会很大。但是,如果您有一段文本,则字体大小会较小以适合该区域。

我查看了 Viewbox,但看不出它可以与可换行文本一起使用。

任何可以执行此操作的 xaml 或代码都会有所帮助(不必是特定的控件)。

最佳答案

你问的问题比听起来更复杂,但我会给你一个想法:

<DockPanel x:Name="LayoutRoot">
<TextBox x:Name="text" Text="this is some text and some more text I don't see any problems..." DockPanel.Dock="Top" TextChanged="text_TextChanged"/>
<TextBlock DockPanel.Dock="Top" Text="{Binding ElementName=tb, Path=FontSize}"/>
<Border Name="bd" BorderBrush="Black" BorderThickness="1">
<TextBlock Name="tb" Text="{Binding ElementName=text, Path=Text}" TextWrapping="Wrap"/>
</Border>
</DockPanel>

并在后面的代码中:

public MainWindow()
{
this.InitializeComponent();
RecalcFontSize();
tb.SizeChanged += new SizeChangedEventHandler(tb_SizeChanged);
}

void tb_SizeChanged(object sender, SizeChangedEventArgs e)
{
RecalcFontSize();
}

private void RecalcFontSize()
{
if (tb == null) return;
Size constraint = new Size(tb.ActualWidth, tb.ActualHeight);
tb.Measure(constraint);
while (tb.DesiredSize.Height < tb.ActualHeight)
{
tb.FontSize += 1;
tb.Measure(constraint);
}
tb.FontSize -= 1;
}

private void text_TextChanged(object sender, TextChangedEventArgs e)
{
RecalcFontSize();
}

尝试一下,拖动它,更改文本...

关于WPF/XAML - 文本可以自动调整大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com