簡體   English   中英

c#wpf datagrid列寬自動大小根據需要添加水平滾動

[英]c# wpf datagrid column width auto size add horizontal scroll if needed

我正在使用WPF進行項目,並且有一個數據網格。 在datagrid中,我有6列,並對其進行了編碼以使用和共享datagrid的所有寬度。 我的問題是,當一列的值足夠長於其標題寬度時,長文本只是將文本切出並僅顯示其寬度所基於的內容。 我想要發生的是為datagrid添加水平滾動,以便如果文本較長,則其標題的寬度將增加,因此,由於datagrid寬度除以其標題,因此將出現水平滾動。 請注意,其他標頭的寬度不應調整或受此更改影響,而應添加水平滾動條。 以下是我的DataGrid XAML代碼:

<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>

提前致謝。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM