隐藏WPF DataGrid滚动条

时间:2015-06-17 21:07:56

标签: c# wpf datagrid

我是WPF的新手。我对DataGrid的要求有点不同,所以我将其转换为如下所示,但我不想要任何滚动条,但它不会被隐藏。我已经使用LayoutTransform这里的行变为列,列变为行。

<DataGrid x:Name="fuelDataGrid" Width="200" Height="900" 
          AutoGenerateColumns="False"
          ItemsSource="{Binding Pump}"
          HorizontalAlignment="Left" FontSize="14"
          VerticalAlignment="Top" 
          HeadersVisibility="None"  
          CanUserReorderColumns="False" 
          CanUserResizeColumns="False" 
          CanUserResizeRows="False" 
          CanUserSortColumns="False" 
          Cursor="Hand" SelectionMode="Single" 
          HorizontalScrollBarVisibility="Disabled" 
          CanUserAddRows="False" 
          CanUserDeleteRows="False" 
          PreviewMouseLeftButtonUp="dataGrid2_PreviewMouseLeftButtonUp"  
          VerticalScrollBarVisibility="Disabled" 
          ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
          ScrollViewer.VerticalScrollBarVisibility="Disabled" 
          MouseDoubleClick="DataGrid_MouseDoubleClick" 
          TargetUpdated="DataGrid_OnTargetUpdated">

    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
           Color="#FFCBCBCB"/>
    </DataGrid.Resources>

    <DataGrid.ColumnHeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="LayoutTransform">
                <Setter.Value>
                    <TransformGroup>
                        <RotateTransform Angle="90"/>
                    </TransformGroup>
                </Setter.Value>
            </Setter>
            <Setter Property="Width" Value="65"/>
            <!--<Setter Property="Height" Value="30"/>-->
        </Style>
    </DataGrid.ColumnHeaderStyle>

    <DataGrid.LayoutTransform>
        <TransformGroup>
            <RotateTransform Angle="-90"/>
        </TransformGroup>
    </DataGrid.LayoutTransform>

    <DataGrid.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Setter Property="LayoutTransform">
                <Setter.Value>
                    <TransformGroup>
                        <RotateTransform Angle="90"/>
                    </TransformGroup>
                </Setter.Value>
            </Setter>
            <Setter Property="Width" Value="100"/>
            <Setter Property="Foreground" Value="Black" />
            <!--<Setter Property="Height" Value="30"/>-->
        </Style>
    </DataGrid.CellStyle>

    <DataGrid.Columns>
        <!--    <DataGridTextColumn Header="Old Price" Binding="{Binding Row1Value}" /> -->
        <DataGridTemplateColumn Header="Old Price">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                 // Code here
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Current Price">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                // Code here
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn> 
</DataGrid.Columns>

我在下面尝试了Hidden。但没有任何工作。

VerticalScrollBarVisibility="Hidden" 
ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
ScrollViewer.VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Hidden"

2 个答案:

答案 0 :(得分:2)

这个简单的测试用例为我提供了一个没有滚动条的数据网格:

<DataGrid
    HorizontalScrollBarVisibility="Hidden"
    VerticalScrollBarVisibility="Hidden"
    ItemsSource="{Binding Items}" />

它绑定到50个字符串的集合。前几个是可见的,其余的超出了窗口的范围。没有滚动条出现。也许在您发现问题之前尝试简化测试用例?

编辑:我尝试复制整个数据网格xaml但仍然无法重现该问题。当然,我必须删除调用未知代码隐藏方法的部分,并在数据模板中替换了TextBlock,其中键入了“// Code here”。因此,要么我们的环境有所不同,要么导致问题的代码不包含在您的问题中。

请包含最简单的测试用例,以重现您所看到的问题,以便有人可以帮助您解决问题。

答案 1 :(得分:0)

我在没有滚动视图的情况下完成了此操作,同时显示了完整的DataGrid。 您可以设置datagrid的height属性。它会禁用或隐藏垂直滚动条。您将在后面的代码上设置此属性。通过设置width属性,将禁用水平滚动条。

您将在构造函数中编写此代码。

public Mainwindow(){
    datagrid.Height=Double.NaN;
    datagrid.Width=Double.NaN;
}