WPF TextBox Scrollbars实际上是否可见?

时间:2011-12-08 08:19:43

标签: wpf textbox wpf-controls

我在WPF项目中有一个TextBox,其verticalscrollbar可见性设置为Auto。当我在运行时在其中设置文本时,当文本较多时,垂直滚动条变为可见,而当文本较少时,垂直滚动条会隐藏。

我想要的是,如果我为它分配一个大文本(并且verticalscrollbar变得可见),那么我将运行一个递归循环,它将字体大小减小到一个级别,直到滚动条变为隐藏。我想获得verticalscrollbar的实际可见性值。

在verticalscrollbarvisibility属性后面的代码中,总是给出auto。 (我认为在XAML中将其设置为auto)。

//如果我的方法对于这个问题是错误的,请告诉我。

1 个答案:

答案 0 :(得分:4)

我找到了。我在函数

中传递了我的文本框
ScrollViewer sv = FindVisualChild<ScrollViewer>(mytextbox);
if (sv != null)
{
    // do something with ScrollViewer
}

public static T FindVisualChild<T>(DependencyObject depObj) where T : DependencyObject
{
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                return (T)child;
            }

            T childItem = FindVisualChild<T>(child);
            if (childItem != null) return childItem;
        }
    }
    return null;
}

它返回ScrollViewer,其可见性属性是我想要的。