닷넷/WPF
C# WPF TextBlock이 렌더링 되지 않은 상태에서 ActualWidth 값이 계산되게 하는 방법
FreeBear
2023. 3. 28. 15:50
반응형
만약 TextBlock의 ActualWidth에 따라서 어떤 작업이 진행되어야 하는 경우에, 뷰모델에서는 이 TextBlock의 정보를 알 수 없는 경우에 말이다. 뷰모델에서 내부적으로 TextBlock을 정의하여 사용한다면 TextBlock이 렌더링이 된 것이 아니기 때문에 ActualWidth 값은 null일 수 밖에 없다.
이 경우에 ActualWidth 값을 알 수 있게 계산할 수 있는 방법이다.
TextBlock textBlock = new TextBlock();
textBlock.FontSize = 14;
textBlock.Text = SelectedText;
textBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
textBlock.Arrange(new Rect(textBlock.DesiredSize));
var duration = TimeSpan.FromSeconds(textBlock.ActualWidth / 50);
위 코드에서 Measure() 메서드와 Arrange() 메서드를 호출하여 TextBlock의 크기를 계산하고, ActualWidth 값을 가져왔다.
이 방법을 사용하면 TextBlock이 렌더링되지 않아도 ActualWidth 값을 정확하게 계산할 수 있다.
반응형