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

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的尺寸的怪癖

猜你喜欢

转载自blog.csdn.net/jiuzaizuotian2014/article/details/81707511