WPF中的DataGrid控件的VerticalScrollBarVisibility属性失效

讨论了WPF中的DataGrid控件放置在StackPanel面板中时VerticalScrollBarVisibility属性失效的问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WPF中的DataGrid控件,如果放在<StackPanel></StackPanel>面板中,VerticalScrollBarVisibility=“Visible”或VerticalScrollBarVisibility=“Auto”是失效的。如下所示:

                     <materialDesign:Card Grid.Column="2" Margin="5">
                            <StackPanel Orientation="Vertical"> <!--StackPanel标签>
                                <DataGrid   AutoGenerateColumns="False" 
                                            ItemsSource="{Binding VMs}" 
                                            DataContext="{Binding DataVM}"   
                                            VerticalScrollBarVisibility="Visible">
                                    <DataGrid.ColumnHeaderStyle>
                                        <Style TargetType="DataGridColumnHeader">
                                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                                        </Style>
                                    </DataGrid.ColumnHeaderStyle>
                                    <DataGrid.Columns>
                                        <DataGridTemplateColumn Width="50" Header="评定">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <RadioButton IsChecked="{Binding IsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>

                                        <DataGridTextColumn Width="60" Header="标度"  Binding="{Binding Index,Mode=OneWay}">
                                        </DataGridTextColumn>
                                  
                                    </DataGrid.Columns>
                                </DataGrid>
                            </StackPanel>
                        </materialDesign:Card>

然后当我删除StackPanel标签后,就显示正常了。

                       <materialDesign:Card Grid.Column="2" Margin="5">
                           <!--删除StackPanel>
                                <DataGrid   AutoGenerateColumns="False" 
                                            ItemsSource="{Binding VMs}" 
                                            DataContext="{Binding DataVM}"   
                                            VerticalScrollBarVisibility="Visible">
                                    <DataGrid.ColumnHeaderStyle>
                                        <Style TargetType="DataGridColumnHeader">
                                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                                        </Style>
                                    </DataGrid.ColumnHeaderStyle>
                                    <DataGrid.Columns>
                                        <DataGridTemplateColumn Width="50" Header="评定">
                                            <DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <RadioButton IsChecked="{Binding IsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                                                </DataTemplate>
                                            </DataGridTemplateColumn.CellTemplate>
                                        </DataGridTemplateColumn>

                                        <DataGridTextColumn Width="60" Header="标度"  Binding="{Binding Index,Mode=OneWay}">
                                        </DataGridTextColumn>
                                  
                                    </DataGrid.Columns>
                                </DataGrid>

                        </materialDesign:Card>

补充:当然,理论上讲,把一个DataGrid放在一个StackPanel确实没有意义,不应该怎么放,当有时会不注意放进去的,或者在StackPanel中还有其它元素且当其它元素被删除后就会出现这种情况。但是,当一个StackPanel中除了放一个DataGrid还方其它元素时,会出现同样的现场,因此要当心。

 

关于上面这种情况的进一步解释,可以参考我的另一篇文章:

WPF中StackPanel的尺寸的怪癖

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值