C# WPF数据网格中的滚动条不工作
你好 我有一个WPF数据网格,显示了一个大数据表的内容。此表比屏幕大得多,因此与此表交互的用户需要滚动条才能看到所有列和行。 如图所示,垂直滚动条可见,但已禁用,而水平滚动条根本不可见 如何使滚动条工作 在一些用户交互之后,通过数据绑定到DataTable填充DataGrid:C# WPF数据网格中的滚动条不工作,c#,wpf,C#,Wpf,你好 我有一个WPF数据网格,显示了一个大数据表的内容。此表比屏幕大得多,因此与此表交互的用户需要滚动条才能看到所有列和行。 如图所示,垂直滚动条可见,但已禁用,而水平滚动条根本不可见 如何使滚动条工作 在一些用户交互之后,通过数据绑定到DataTable填充DataGrid: this.topPhrases.DataContext = loadedValues.DefaultView; 其中topPhrases是DataGrind,laodedValues是DataTable 这是DataG
this.topPhrases.DataContext = loadedValues.DefaultView;
其中topPhrases是DataGrind,laodedValues是DataTable
这是DataGrid的xaml代码:
<DataGrid Name="topPhrases" Grid.Row="1" Margin="10,0" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" ItemsSource="{Binding}">
</DataGrid>
GUI元素的层次结构包括:
窗口->网格->包装->内容控制->网格->数据网格
我在网上找到了很多东西,比如:
但迄今为止,没有任何建议奏效
在RowDefinition中设置固定高度可以使水平和垂直滚动条都工作。但我真正想要的不是DataGrid的固定大小,而是主窗口的大小(当然减去顶部工具栏的高度)
将第一行定义的高度设置为自动,第二行定义的高度设置为*,例如:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ToolBar />
<DataGrid Grid.Row="1" />
</Grid>
</Window>
还要确保不要使用任何StackPanel。有关更多信息,请参阅我的回答,原因如下:
如果您在这方面需要任何进一步的帮助,我建议您发布窗口的整个XAML标记
在RowDefinition中设置固定高度可以使水平和垂直滚动条都工作。但我真正想要的不是DataGrid的固定大小,而是主窗口的大小(当然减去顶部工具栏的高度)
将第一行定义的高度设置为自动,第二行定义的高度设置为*,例如:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ToolBar />
<DataGrid Grid.Row="1" />
</Grid>
</Window>
还要确保不要使用任何StackPanel。有关更多信息,请参阅我的回答,原因如下:
如果您在这方面需要任何进一步的帮助,我建议您发布窗口的整个XAML标记。查看它在没有奇怪的布局层次结构的情况下是如何工作的,例如,将DataGrid直接放入顶级网格。
网格。行的大小是多少?只有当DataGrid
的高度小于父控件时,才会显示滚动条,在本例中为Grid.Row
。您可以设置例如
。您的DataGrid
可能比这个还要大,现在您看不到整个DataGrid
。尝试放置DataGrid.Height=“50”
或一些小东西。看看会发生什么。@daidai在RowDefinition中设置一个固定的高度可以使水平和垂直滚动条都工作。但是我真正想要的是DataGrid不是一个固定的大小,而是主窗口的大小(当然减去顶部工具栏的高度),看看它在没有奇怪的布局层次结构的情况下是如何工作的,例如,将DataGrid直接放在顶层网格中。网格。行的大小是多少?只有当DataGrid
的高度小于父控件时,才会显示滚动条,在本例中为Grid.Row
。您可以设置例如
。您的DataGrid
可能比这个还要大,现在您看不到整个DataGrid
。尝试放置DataGrid.Height=“50”
或一些小东西。看看会发生什么。@daidai在RowDefinition中设置一个固定的高度可以使水平和垂直滚动条都工作。但是我真正想要的是DataGrid不是一个固定的大小,而是主窗口的大小(当然减去顶部工具栏的高度),谢谢你的回答。我尝试了你的建议,使用Auto和*但是它导致了与我到目前为止相同的行为。也许我还需要提一下,我不希望主窗口有一个固定的大小。例如:如果用户使其全屏显示,则表格的大小应增加,以删除包装,可能还包括ContentControl。同样,如果您需要任何进一步的帮助,请提供您问题的完整可复制样本。感谢您的回答。我尝试了Auto和*的建议,但它导致了与我到目前为止相同的行为。也许我还需要提一下,我不希望主窗口有一个固定的大小。例如:如果用户使其全屏显示,则表格的大小应增加,以删除包装,可能还包括ContentControl。同样,如果您需要任何进一步的帮助,请提供您的问题的完整可复制样本。