silverlight文本框滚动条可见性

时间:2009-12-01 04:16:57

标签: silverlight silverlight-3.0

我有一个文本框,其verticalscrollbarvisibility设置为auto。我想做一个测试,以确定滚动条在运行时是否实际可见。我试过这句话:

if(textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)

但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先将以下扩展方法放在静态类中(将类放在与代码的其余部分相同的命名空间中,或者放在代码文件中包含using语句的命名空间中: -

public static IEnumerable<DependencyObject> Descendents(this DependencyObject root)
{
    int count = VisualTreeHelper.GetChildrenCount(root);
    for (int i = 0; i < count; i++)
    {
        var child = VisualTreeHelper.GetChild(root, i);
        yield return child;
        foreach (var descendent in Descendents(child))
            yield return descendent;
    }
}

使用此扩展方法,您可以在文本框内挖出ScrollViewer,该文本框负责滚动条并测试其ComputedVerticalScrollBarVisibility

if (textbox1.Descendents().OfType<ScrollViewer>()
  .FirstOfDefault().ComputedVerticalScrollBarVisibility == Visibility.Visible)