从没有实际TextBox的文本大小计算TextBox大小

时间:2016-12-27 11:14:25

标签: c# textbox uwp measure

在UWP应用程序中,是否可以使用某些文本的大小和字体来计算TextBox在不滚动的情况下保存该文本所需的大小?

这在设计整体布局时非常有用 - 根据TextBox的大小,可能会切换到不同的配置。

我将在代码中完成所有这些操作,而不是在xaml中,因为我的应用程序是跨平台的,并且其图形布局大脑位于与平台无关的部分。

如果无法知道尺寸,即使知道它的尺寸也不错,如果可能的话。

1 个答案:

答案 0 :(得分:0)

试试这个:

public sealed partial class MainPage
{
    private TextBox _textBox;
    private TextBlock _textBlock;

    public MainPage()
    {
        InitializeComponent();
        Loaded += MainPage_Loaded;
    }
    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        _textBlock = new TextBlock
        {
            Margin = new Thickness(10000, 10000, 0, 0),
        };
        MainGrid.Children.Add(_textBlock);

        _textBox = new TextBox
        {
            Width = _textBlock.ActualWidth + 64, //is for clear button space
            Height = _textBlock.ActualHeight,
        };
        _textBox.TextChanged += _textBox_TextChanged;
        MainGrid.Children.Add(_textBox);
    }

    private void _textBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        _textBlock.Text = _textBox.Text;
        _textBox.Width = _textBlock.ActualWidth + 64;
        _textBox.Height = _textBlock.ActualHeight;
    }
}

这不是完美的解决方案,但可能适合。

您只需在屏幕外的某个位置创建textBlock并按照其大小。

XAML只有1个Grid x:Name =" MainGrid"