使用ScrollViewer时DataGrid中的空列

时间:2012-05-08 10:02:52

标签: wpf scrollviewer

我有几个tabitems,每个都有一个DataGrid,我将DataGrid的属性“AutoGenerateColumns”设置为false。 TabControl被ScrollViewer包含,这就是问题,每个TabItem中的每个DataGrid最后都有一个空列。我用Google搜索,但得到一些有用的东西。 这是代码结构。

<ScrollViewer>
    <TabControl>
        <TabItem>
            <DataGrid AutoGenerateColumns="False">
            </DataGrid>
        </TabItem>
    </TabControl>
</ScrollViewer> 

任何人都可以帮助我吗?非常感谢。

更新

好吧,实际情况是,我在TabControl中有几个TabItems,但是TabControl的宽度是有限的,所以我将使用ScrollViewer“滚动”TabItems,所以我可以清楚地看到这些TabItems,这就是为什么它导致了当前的问题。我认为,ScrollViewer会影响TabItems 宽度,并间接地影响每个TabItem中DataGrid的宽度,因此DataGrid中列的总宽度小于DataGrid的宽度,因此,有一个空的右侧的栏目。

我尝试在DataGrid周围添加另一个ScrollViewer,但是失败了,右侧还有一个空白部分。

1 个答案:

答案 0 :(得分:1)

正如@ErenErsönmez所回答的那样,行为是来自DataGrid的预期行为。要更改它,您需要设置列的宽度,其中至少有一个设置为span。我使用以下内容使行跨越数据网格的宽度。

<TabControl>
    <TabItem Header="Tab Item 1">
        <DataGrid AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Column A" Width="Auto" />
                <!-- The following column grows to span the available area -->
                <DataGridTextColumn Header="Column B" Width="*" MinWidth="100" />
                <DataGridTextColumn Header="Column C" Width="Auto" />
            </DataGrid.Columns>
        </DataGrid>
    </TabItem>
<TabControl>

就滚动TabControl本身而言,您是否可以发布一些有关您要执行的操作的详细信息。我相信,由于有大量的标签,你正在尝试整个TabControl滚动。也许这样的事情(未经测试)会有助于http://rickdoes.net/post/2009/11/06/WPF-Single-Row-Tab-Control.aspx