DataGrid水平滚动条已禁用

时间:2012-09-09 03:14:19

标签: .net wpf datagrid wpfdatagrid wpf-4.0

我有WPF DataGrid,ItemsSource绑定到ICollectionView实现。在DataGrid被实例化之前,集合中已经有很多项。

DataGrid中的所有列都是DataGridTemplateColumn类型。所有列都明确指定了Width。

视图中有太多列,因此需要水平滚动。

当DataGrid.Horizo​​ntalScrollBarVisibility属性为Auto时,水平滚动条在我垂直滚动项目之前不可见。

当DataGrid.Horizo​​ntalScrollBarVisibility属性为Visible时,在我垂直滚动项目之前,不会启用水平滚动条。

更改其他属性(Width,MaxWidth,MinWidth,EnableColumnVirtualization,ScrollViewer.CanContentScroll,SelectionMode,SelectionUnit)无效。

将DataGrid放入ScrollViewer不是一个选项,因为在这种情况下,垂直滚动条会与内容水平滚动。

那么,是什么导致了这种行为呢?可以做些什么?

更新

UserControl的XAML

<UserControl
    x:Class="Belrost.Windows.EventListEditor2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="4" />
            <RowDefinition Height="23" />
            <RowDefinition Height="4" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="8" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="75" />
            <ColumnDefinition Width="4" />
            <ColumnDefinition Width="75" />
            <ColumnDefinition Width="4" />
            <ColumnDefinition Width="75" />
            <ColumnDefinition Width="8" />
        </Grid.ColumnDefinitions>
        <DataGrid
            Grid.Row="0" Grid.RowSpan="1"
            Grid.Column="0" Grid.ColumnSpan="8"
            ItemsSource="{Binding}"
            IsSynchronizedWithCurrentItem="True"
            AutoGenerateColumns="False"
            SelectionMode="Extended"
            SelectionUnit="FullRow">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Timestamp" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Timestamp}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Machine" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Machine}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="Principal" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Principal}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberName" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberName}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberFile" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberFile}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberLine" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberLine}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="MemberTime" Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding MemberTime}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>

用户控件按以下方式放在TabControl上

<TabControl.ContentTemplate>
    <DataTemplate>
        <ContentControl Content="{Binding}">
            <ContentControl.Resources>
                <DataTemplate DataType="{x:Type w:EventListView}">
                    <w:EventListEditor2 />
                </DataTemplate>
            </ContentControl.Resources>
        </ContentControl>
    </DataTemplate>
</TabControl.ContentTemplate>

注意

如果我将用户控件的代码复制粘贴到DataTemplate中,一切正常。所以问题与UserControl的使用有关。

0 个答案:

没有答案