检测滚动条属于哪个元素

发布于 2024-11-06 15:39:00 字数 1707 浏览 7 评论 0原文

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

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

我尝试在行的 rowdefinition 上设置 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 问题:-)

I have a relatively complex layout. It consists of:
A grid with one column and three rows.
In the first row (the on giving me trouble) I have a developer express componenet - another GridControl.

My problem is, that though the height of this first row is Auto, the vertical scrollbar displays even though there's space enough for content.

I've tried setting the ScrollViewer.VerticalScrollBarVisibility="Hidden" on the row's rowdefinition, but this doesn't help.

Likewise, I've set the inner GridControl to not use scrollbars (using some Developer Express magic - not just ScrollViewer as this doesn't work)

Yet, no matter what I do, that damn scrollbar appears... Is there any way to figure out which control renders it, so I can disable the damn thing? It's not just a question of it being ugly - scrolling it actually messes with the layout!

Thanks in advance!

The relevant code:

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

EDIT FOR CLARIFICATION: This is WPF issue :-)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

单调的奢华 2024-11-13 15:39:00

您可以尝试查看 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;
}

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

You could try checking out the VisualTree, i think Snoop might be helpful for that, it probably has some other useful features too. Getting the VisualTree is a trivial matter though, you can write a single recursive method using the VisualTreeHelper, so you might not need the big guns.

e.g.

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

Wrote that quite some time ago, it's very sketchy (wouldn't recommend making it an extension method), gets the whole tree at one, could be modified to only fetch children on expansion of the node.

静待花开 2024-11-13 15:39:00

您可以使用类似 Google Chrome 的工具。

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

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

You could use something like Google Chrome's tools.

I would, in Chrome, right click around the area that has the scroll bars and select "Inspect Element". Chrome will highlight with a border what element you are looking at. You can then navigate the html within Google Chrome's inspector until it is highlighting the element with the scrollbar.

You can then find the reason from there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文