2011-05-10 16 views
1

我有一個比較複雜的佈局。它由以下部分組成: 一列三行的網格。 在第一行(給我麻煩)我有一個開發人員快速組件 - 另一個GridControl。檢測滾動條屬於哪個元素

我的問題是,雖然第一行的高度是自動,縱向滾動條顯示,即使有足夠的空間用於內容。

我試過在行的rowdefinition上設置ScrollViewer.VerticalScrollBarVisibility =「Hidden」,但這沒有幫助。

同樣,我已經設置內GridControl不使用滾動條(使用某些Developer速成魔法 - 不僅僅是因爲ScrollViewer中這不工作)

然而,無論我做什麼,在出現該死的滾動條...有什麼辦法來找出哪個控件呈現它,所以我可以禁用該死的東西?這不僅僅是一個醜陋的問題 - 滾動它實際上與佈局混亂!

在此先感謝!

相關的代碼:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" ScrollViewer.VerticalScrollBarVisibility="Hidden" /> 
     <RowDefinition Height="*" MaxHeight="240" /> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <dxg:GridControl Name="StudySizeGrid" Grid.Column="0" Grid.Row="0" > 
     <dxg:GridControl.Resources> 
      <ControlTemplate x:Key="{dxgt:TableViewThemeKey ResourceKey=ControlTemplate}"> 
       <ScrollViewer x:Name="scr" 
      VerticalScrollBarVisibility="Disabled" 
      HorizontalScrollBarVisibility="Disabled" 
      Focusable="False" 
      dxg:GridControl.CurrentView="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
      Template="{DynamicResource {dxgt:TableViewThemeKey ResourceKey=ScrollViewerTemplate}}"> 
        <ScrollViewer.CanContentScroll>False</ScrollViewer.CanContentScroll> 
       </ScrollViewer> 
      </ControlTemplate> 
     </dxg:GridControl.Resources> 
... 
</dxg:GridControl> 

編輯澄清:這是WPF問題:-)

+0

你可以發佈滾動條的SS嗎? – 2011-05-10 10:39:48

+0

對不起,我的老闆真的很偏執,我們正在爲第三方開發,我不允許上傳屏幕截圖:/ 這很愚蠢,但我不能反對上級... – Fafnr 2011-05-10 13:54:44

回答

1

你可以嘗試檢查VisualTree,我認爲Snoop可能會有所幫助,它可能也有一些其他有用的功能。獲得VisualTree雖然是一件小事,但你可以使用VisualTreeHelper編寫一個遞歸方法,所以你可能不需要大槍。

例如

public static TreeViewItem GetVisualTree(this DependencyObject dpo) 
{ 
    TreeViewItem item = new TreeViewItem(); 
    item.Header = dpo.GetType().ToString().Split('.').Last(); 
    if (dpo is FrameworkElement && (dpo as FrameworkElement).Name != string.Empty) item.Header += " (" + (dpo as FrameworkElement).Name + ")"; 
    int cCount = VisualTreeHelper.GetChildrenCount(dpo); 
    for (int i = 0; i < cCount; i++) 
    { 
     item.Items.Add(VisualTreeHelper.GetChild(dpo, i).GetVisualTree()); 
    } 
    return item; 
} 

寫道,前一段時間,這是非常粗略(不建議使它的擴展方法),在一個得到整個樹,可以修改爲只在節點的擴展取孩子。

+0

謝謝隊友!我會盡快看看 - 我現在正在回家的路上,但我明天會看看。 – Fafnr 2011-05-10 13:52:14

+0

感謝Snoop技巧 - 它看起來會幫助我很多! :) – Fafnr 2011-05-11 10:31:20

0

您可以使用像谷歌Chrome瀏覽器的工具。

我會在Chrome中右鍵單擊具有滾動條的區域並選擇「檢查元素」。 Chrome會用邊框突出顯示您正在查看的元素。然後,您可以在Chrome瀏覽器的檢查器中導航html,直到使用滾動條突出顯示該元素。

然後,您可以從那裏找到原因。

+0

這是WPF .... – Fafnr 2011-05-10 13:55:17