2009-12-01 87 views
2

我有一个verticalscrollbarvisibility设置为auto的文本框。我想做一个测试,以确定滚动条在运行时是否真的可见。我曾尝试声明:silverlight textbox scrollbarvisibility

如果(textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)

,但它不工作。有任何想法吗?

回答

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) 
+0

嗨安东尼, 我想我可能会错过一些东西。我尝试实现以下错误时遇到以下错误: 1)'System.Windows.Controls.ScrollViewer'是'类型',但用作变量 2)方法'OfType'没有重载需要'1'参数 – 2009-12-02 00:16:07

+0

Oops都是实际上相同的问题,输入OfType错误的语法,回答调整 – AnthonyWJones 2009-12-02 10:17:47

相关问题