1

我有一个相对复杂的布局。它包括: 一列三行的网格。在第一行(给我带来麻烦)我有一个开发人员快递组件 - 另一个 GridControl。

我的问题是,尽管第一行的高度是自动的,但即使有足够的空间容纳内容,也会显示垂直滚动条。

我尝试在行的行定义上设置 ScrollViewer.VerticalScrollBarVisibility="Hidden" ,但这没有帮助。

同样,我已将内部 GridControl 设置为不使用滚动条(使用一些 Developer Express 魔术 - 不仅仅是 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问题:-)

4

2 回答 2

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;
}

很久以前写过,它非常粗略(不建议将其作为扩展方法),将整个树合二为一,可以修改为仅在扩展节点时获取子节点。

于 2011-05-10T09:24:59.897 回答
0

你可以使用类似谷歌浏览器的工具。

我会在 Chrome 中右键单击具有滚动条的区域并选择“检查元素”。Chrome 会用边框突出显示您正在查看的元素。然后,您可以在 Google Chrome 的检查器中导航 html,直到它使用滚动条突出显示该元素。

然后你可以从那里找到原因。

于 2011-05-10T09:23:31.183 回答