Ошибка правильная: UIElement не имеет свойства ActualWidth.
Вы правы, что вам необходимо преобразовать UIElement в класс, который определяет ActualWidth.Это не должен быть самый производный класс (например, TextBox).Это может быть любой класс, от которого наследуется объект.Вам не нужно угадывать этот класс: вы можете найти класс, который определяет ActualWidth, в документации.
Поиск в документах по ActualWidth, который мы находим его определенным дочерним элементом UIElement, FrameworkElement .Поскольку вы знаете, что TextBox работает, вы также можете посмотреть его там: в документах TextBox .ActualWidth указано, что он унаследован от FrameworkElement
. Вы можете изменить код для преобразования в FrameworkElement, чтобы получитьСвойство ActualWidth, и оно будет работать для всего, что имеет ActualWidth:
private void FindActualWidth(UIElement targetElement)
{
double myActualWidth = (targetElement as FrameworkElement)?.ActualWidth;
//No error: FrameworkElement defines 'ActualWidth'
}