【发布时间】:2017-04-13 19:23:56
【问题描述】:
好的,我也遇到了“垂直滚动条不显示”的问题,建议的解决方案要么不起作用,要么不适用于这种情况。
希望不是显示一个,而是两个数据网格,并排显示,每个在应用程序上都有自己的数据源,可以正确响应用户调整大小,这意味着网格将按预期扩展和收缩。网格应该被“锚定”并相应地渲染(哦,我多么怀念 WinForms 和实际简单锚定的日子!)。
第一个网格通常会显示不足的行来触发垂直滚动条,没关系。
第二个数据网格的内容基于第一个数据网格的选定行,这意味着当用户在第一个数据网格(第 0 列)中选择一行时,将执行一条 SQL 语句并将结果显示在另一个数据网格中(第 1 列中的一个)。
发生的情况是第二个网格的内容,如果大于显示的大小,将继续呈现(看不见)推动页面容器项目(底部的状态栏,代码中未显示)到一侧并继续在应用程序边界之外进行渲染(不可见,但网格的行为就像它有无限的显示空间一样)。
我没有得到一个带有垂直滚动条的漂亮的分页网格。
我使用 MVVMLight 作为工具包,并且相应的 ViewModel 按设计工作。数据不是问题,只是渲染。
我很确定解决方案非常简单,只是我还没有 xaml 经验(我是新手)来解决这个问题。我已经尝试将网格封闭在各种其他容器中(DockPanel、StackPanel withorientation=Horizontal 等),但似乎无法做到正确。我什至尝试将行高绑定到选项卡控件的实际高度 - 失败。
所以...对于教程解释的一点帮助将不胜感激!
这是页面的完整 xaml(除了我已经删除了无关的标签页):
<Page x:Class="GetSchemaExplorerMsSqlSvr.DbMetaDataPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:GetSchemaExplorerMsSqlSvr"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="500"
Height="Auto"
Width="Auto"
Title="DbMetaDataPage"
x:Name="pgDbMetaDataPage"
Background="{StaticResource YellowBackground}"
DataContext="{Binding MainWindowVM, Source={StaticResource Locator}}"
>
<Canvas>
<TabControl x:Name="tcDbMetaData" Height="Auto" Width="Auto">
<TabItem x:Name="tiDbMetaData" Header="Get Schema" VerticalAlignment="Stretch">
<Grid Margin="1,1,1,1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<DataGrid
Grid.Column="0"
x:Name="dgDbMetaData"
ItemsSource="{Binding Path=GetSchemaMetaData, Mode=OneWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True"
SelectedItem="{Binding Path=SelectedMetaDataItem, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
/>
<DataGrid
Grid.Column="1"
ItemsSource="{Binding Path=MetaDataCollectionInfo, Mode=OneWay}"
IsReadOnly="True"
VerticalScrollBarVisibility="Auto"
/>
</Grid>
</TabItem>
</TabControl>
</Canvas>
</Page>
【问题讨论】:
标签: c# wpf xaml datagrid scrollbar