2010-10-21 12 views
11

यह जांचने के लिए कि क्या एक स्क्रॉल (लंबवत या क्षैतिज) वर्तमान में WPF DataGrid में दिखाया गया है? क्षैतिज स्क्रॉलबार दृश्यता और वर्टिकलस्क्रोलबार दृश्यता का उपयोग व्यवहार को सेट करने के लिए किया जाता है और वे ऑटो पर सेट होते हैं।यह जांचने के लिए कि क्या वर्तमान में WPF DataGrid में स्क्रॉल दिखाई दे रहा है?

उत्तर

22
ScrollViewer scrollview = FindVisualChild<ScrollViewer>(dataGrid); 
Visibility verticalVisibility = scrollview.ComputedVerticalScrollBarVisibility; 
Visibility horizontalVisibility = scrollview.ComputedHorizontalScrollBarVisibility; 
+0

मैं अपने आप को लागू करने के लिए FindVisualChild है, मैं नहीं करते हैं? –

+0

हाँ, आसपास कई कार्यान्वयन हैं: http://stackoverflow.com/questions/980120/finding-control-within-wpf-itemscontrol –

10

यहाँ FindVisualChild के एक कार्यान्वयन है:

private childItem FindVisualChild<childItem>(DependencyObject obj) 
    where childItem : DependencyObject 
{ 
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) 
    { 
     DependencyObject child = VisualTreeHelper.GetChild(obj, i); 
     if (child != null && child is childItem) 
      return (childItem)child; 
     else 
     { 
      childItem childOfChild = FindVisualChild<childItem>(child); 
      if (childOfChild != null) 
       return childOfChild; 
     } 
    } 
    return null; 
} 
0
Private Function FindVisualChild(Of childItem As DependencyObject)(ByVal obj As DependencyObject) As childItem 
     For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(obj) - 1 
      Dim child As DependencyObject = VisualTreeHelper.GetChild(obj, i) 
      If child IsNot Nothing AndAlso TypeOf child Is childItem Then 
       Return CType(child, childItem) 
      Else 
       Dim childOfChild As childItem = FindVisualChild(Of childItem)(child) 
       If childOfChild IsNot Nothing Then 
        Return childOfChild 
       End If 
      End If 
     Next i 
     Return Nothing 
    End Function 
संबंधित मुद्दे

 संबंधित मुद्दे