Wpf Can';无法获取活动的垂直滚动条
我已经读了很多关于这个问题的帖子,但是在我的要求下,我无法让它工作。我的计算方式可能有一些逻辑上的问题,或者我遗漏了一些关键的细节,但我看不出来 我得到的是一个滚动条,但它似乎是不活动的。我的猜测是,由于标记的缘故,网格呈现为完整的,这使得卷轴感觉不必要。我怎么能让它感觉不一样呢 我希望创建一个显示较长数据网格的窗口,即:Wpf Can';无法获取活动的垂直滚动条,wpf,xaml,datagrid,scrollbar,Wpf,Xaml,Datagrid,Scrollbar,我已经读了很多关于这个问题的帖子,但是在我的要求下,我无法让它工作。我的计算方式可能有一些逻辑上的问题,或者我遗漏了一些关键的细节,但我看不出来 我得到的是一个滚动条,但它似乎是不活动的。我的猜测是,由于标记的缘故,网格呈现为完整的,这使得卷轴感觉不必要。我怎么能让它感觉不一样呢 我希望创建一个显示较长数据网格的窗口,即: 高度固定 在宽度上适合内容 无法调整大小 XAML 我错过了什么?这里的问题是您使用堆栈面板来包装数据网格StackPanel将增长,直到它可以包含整个DataGrid,
我错过了什么?这里的问题是您使用
堆栈面板来包装数据网格StackPanel
将增长,直到它可以包含整个DataGrid
,因此在这种情况下,DataGrid
将其垂直滚动条设置为可见,但实际上其高度已扩展到不需要显示滚动条的程度。如果改为将滚动条可见性设置为Auto
,您将看到它从未出现过
您应该使用网格
布局,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
VerticalScrollBarVisibility="Visible"
AutoGenerateColumns="False" Grid.Row="1">
<!-- ... -->
</DataGrid>
</Grid>
<ScrollViewer VerticalScrollBarVisibility="Visible">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
AutoGenerateColumns="False">
<!-- ... -->
</DataGrid>
</StackPanel>
</ScrollViewer>
这里的问题是使用StackPanel
包装DataGrid
StackPanel
将增长,直到它可以包含整个DataGrid
,因此在这种情况下,DataGrid
将其垂直滚动条设置为可见,但实际上其高度已扩展到不需要显示滚动条的程度。如果改为将滚动条可见性设置为Auto
,您将看到它从未出现过
您应该使用网格
布局,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
VerticalScrollBarVisibility="Visible"
AutoGenerateColumns="False" Grid.Row="1">
<!-- ... -->
</DataGrid>
</Grid>
<ScrollViewer VerticalScrollBarVisibility="Visible">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
AutoGenerateColumns="False">
<!-- ... -->
</DataGrid>
</StackPanel>
</ScrollViewer>
不确定您真正想要的是什么,第三个点不能调整大小意味着它应该具有固定的高度和宽度,因此当然,如果内容大小发生变化,它就不能相应地改变。或者你的意思是尺寸可以改变,但不能通过用户界面(按用户)来改变?完全正确。我希望宽度固定为子项(网格及其边界)的“值”。并且高度应该固定在一个固定的数字上。用户不得触摸尺寸。我现在有这个问题-唯一的问题是垂直滚动是不活动的(禁用,变灰,不可点击)。你的窗口上有ScrollViewer吗?说到滚动条,请尝试使用ScrollViewer
类中的一些附加属性来更改某些行为。@KingKing据我所知,网格(或者更确切地说窗口)默认有一个滚动查看器,使用它是最明智的方法。屏幕上的滚动条也暗示了这一点,尽管它是非活动的。当我开始安装/固定尺寸时,我甚至启动了滚动条并开始工作。现在,我有点困惑。如果您对如何使用scroll viewer控件有任何建议,请随时(事实上,您迫切需要)发布一个示例作为回复。您是指DataGrid bygrid
?因为网格
控件实际上没有scrollviewer。如果可能,请在您的窗口中添加代码,我不认为DataGrid的内部scrollviewer可以无缘无故地轻松禁用。不确定您真正想要的是什么,第三点不能调整大小意味着它应该具有固定的高度和宽度,因此,当然,如果内容大小发生变化,它不能相应地改变。或者你的意思是尺寸可以改变,但不能通过用户界面(按用户)来改变?完全正确。我希望宽度固定为子项(网格及其边界)的“值”。并且高度应该固定在一个固定的数字上。用户不得触摸尺寸。我现在有这个问题-唯一的问题是垂直滚动是不活动的(禁用,变灰,不可点击)。你的窗口上有ScrollViewer吗?说到滚动条,请尝试使用ScrollViewer
类中的一些附加属性来更改某些行为。@KingKing据我所知,网格(或者更确切地说窗口)默认有一个滚动查看器,使用它是最明智的方法。屏幕上的滚动条也暗示了这一点,尽管它是非活动的。当我开始安装/固定尺寸时,我甚至启动了滚动条并开始工作。现在,我有点困惑。如果您对如何使用scroll viewer控件有任何建议,请随时(事实上,您迫切需要)发布一个示例作为回复。您是指DataGrid bygrid
?因为网格
控件实际上没有scrollviewer。如果可能的话,请在你的窗口中添加你所做的代码,我不认为DataGrid的内部scrollviewer可以无缘无故地被禁用。非常好的解释。和+1表示两种方法的示例。我不喜欢使用网格布局(由于某些原因,当我必须为添加的子项指定行和列时,它似乎过时了)。我将尝试使用DockPanel,但如果它不起作用,我将使用外部包装的ScrollViewer。还有比stack、dock和grid更多的容器吗?@KonradViltersten除了stack、dock和grid之外,我们还有UniformGrid、WrapPanel、VirtualzingStackPanel、Canvas和一些其他特殊面板,用于一些控件,包括TabPanel、Toolbar OverflowPanel。您甚至可以创建自己的自定义面板(基于panel
)。事实上,第二个代码使用包装器ScrollViewer
,只要可以在DataGrid中滚动两个按钮就可以了DockPanel
应该运行良好,不需要额外的ScrollViewer。如果你能使用DockPanel,它可能是你能使用的最好的一个。非常好的解释。和+1表示两种方法的示例。我不喜欢使用网格布局(由于某些原因,当我必须为添加的子项指定行和列时,它似乎过时了)。我给你一个t