我有一个相对复杂的布局。它包括: 具有一列和三行的网格。 在第一行(上面给我带来麻烦)我有一个开发人员快速组件 - 另一个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问题: - )
答案 0 :(得分:1)
您可以尝试检查VisualTree,我认为Snoop可能对此有所帮助,它可能还有一些其他有用的功能。获取VisualTree是一件小事,但是你可以使用VisualTreeHelper
编写一个递归方法,所以你可能不需要大枪。
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;
}
在很久以前写过,它非常粗略(不建议将其作为扩展方法),将整个树放在一个,可以修改为仅在扩展节点时获取子节点
答案 1 :(得分:0)
您可以使用Google Chrome的工具。
我会在Chrome中右键单击带有滚动条的区域并选择“Inspect Element”。 Chrome会使用边框突出显示您正在查看的元素。然后,您可以在Google Chrome的检查器中导航html,直到使用滚动条突出显示该元素。
然后你可以从那里找到原因。