2009-12-01 55 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

相關問題