2017-07-28 102 views
2

我正在使用WPF的項目,我有一個數據網格。在datagrid中,我有6列,我編碼它使用並共享所有的數據網格的寬度。我的問題是,當一列的值足夠長時,長文本只是將文本剪掉,只是根據寬度顯示它的內容。我想要發生的是爲數據網格添加一個水平滾動,以便如果文本很長,其標題的寬度將增加,因此,由於數據網格的寬度除以它的標題,會出現一個水平滾動。請注意,其他標題的寬度不應調整或受此更改影響,而應添加水平滾動。 下面是我的DataGrid XAML代碼:c#wpf datagrid列寬自動大小添加水平滾動如果需要

<DataGrid x:Name="accountsBalance_grd" 
        HorizontalAlignment="Left" 
        Margin="266,118,0,0" 
        VerticalAlignment="Top" 
        Height="498" 
        Width="836" 
        AreRowDetailsFrozen="True" 
        AutoGenerateColumns="False" 
        CanUserReorderColumns="False" 
        CanUserResizeColumns="False" 
        CanUserResizeRows="False" 
        CanUserSortColumns="False" 
        CanUserAddRows="False" 
        BorderBrush="Blue" 
        Background="White" 
        Foreground="Blue" 
        BorderThickness="2" 
        HorizontalGridLinesBrush="Black" 
        Loaded="accountsBalance_grd_Loaded"> 
      <DataGrid.ColumnHeaderStyle> 
       <Style TargetType="DataGridColumnHeader"> 
        <Setter Property="FontSize" 
          Value="20" /> 
       </Style> 
      </DataGrid.ColumnHeaderStyle> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Name" 
            Width="150" 
            Binding="{Binding accountBalanceName}" 
            IsReadOnly="True" /> 
       <DataGridTextColumn Header="Total Balance" 
            Width="150" 
            Binding="{Binding accountBalanceTotal}" 
            IsReadOnly="True" /> 
       <DataGridTextColumn Header="Amount" 
            Width="120" 
            Binding="{Binding accountBalanceAmount}" 
            IsReadOnly="True" /> 
       <DataGridTextColumn Header="Transaction" 
            Width="160" 
            Binding="{Binding accountBalanceTransaction}" 
            IsReadOnly="True" /> 
       <DataGridTextColumn Header="Date" 
            Width="*" 
            Binding="{Binding accountBalanceDate}" 
            IsReadOnly="True" /> 
       <DataGridTextColumn Header="Incharge" 
            Width="*" 
            Binding="{Binding accountBalanceAdmin}" 
            IsReadOnly="True" /> 
      </DataGrid.Columns> 
      <DataGrid.RowStyle> 
       <Style TargetType="{x:Type DataGridRow}"> 
        <Setter Property="FontSize" 
          Value="15" /> 
        <Setter Property="FontFamily" 
          Value="Arial" /> 
        <Setter Property="FontWeight" 
          Value="Bold" /> 
        <Setter Property="Foreground" 
          Value="Black" /> 
       </Style> 
      </DataGrid.RowStyle> 
     </DataGrid> 

在此先感謝。

回答

0

代替DataGridTextColumn,你可以使用DataGridTemplateColumn如下:

<DataGridTemplateColumn Header="Transaction" Width="160"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
       <TextBlock Text="{Binding accountBalanceTransaction}"></TextBlock> 
      </ScrollViewer> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn>