【问题标题】:WPF DataGridTextColumn MaxLengthWPF DataGridTextColumn MaxLength
【发布时间】:2018-02-27 09:41:46
【问题描述】:

我有一个带有 DataGridTextColumn 的 DataGrid,我已将 TextBlock.TextWrapping 设置为 NoWrap。 如果我尝试显示一条非常长的线,超过 10000 个字符长的显示就像它比 TextBlock.MaxWidth 还要多。问题是它会删除任何后续换行符并有效地停止显示其他任何内容。我该如何解决,以便 MaxWidth 更长(我已经将其设置为可能的最大值)或者它至少显示换行符以便显示以下行。

            <DataGrid Grid.Row="0" Name="LogDataGrid" Margin="0,25,0,0" AutoGenerateColumns="False" VirtualizingPanel.ScrollUnit="Pixel" IsReadOnly="True" FontWeight="Normal" CanUserSortColumns="False" IsTabStop="True" HeadersVisibility="Column">
                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Setter Property="Foreground" Value="{Binding Color}"/>
                    </Style>
                </DataGrid.RowStyle>
                <DataGrid.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="IsTabStop" Value="False"></Setter>
                    </Style>
                </DataGrid.CellStyle>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="DateTime" Binding="{Binding DateTime, StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Width="Auto" />
                    <DataGridTextColumn Header="Version" Binding="{Binding Version}" Width="60"/>                       
                    <DataGridTextColumn Header="Text" Binding="{Binding Text}" Width="{Binding Path=WrapText, Mode=OneWay, Source={x:Static p:Settings.Default}, Converter={StaticResource BooleanDataGridLengthConverter}}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="{Binding Path=WrapText, Mode=OneWay, Source={x:Static p:Settings.Default}, Converter={StaticResource BooleanTextWrappingConverter}}" />
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>

包裹起来的样子 当它没有被包裹并且线真的很长时

【问题讨论】:

    标签: wpf wpfdatagrid textblock datagridtextcolumn


    【解决方案1】:

    我更喜欢使用 DataGridTemplateColumn,因为这样您就可以更好地控制数据,例如能够设置工具提示。确保内部文本块具有 TextWrapping="Wrap" 并且模板列的宽度是您需要的大小。还要确保数据网格上没有固定的行高。


    <DataGridTemplateColumn Header="Subject" Width="*">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Subject}" ToolTip="{Binding Subject}" TextWrapping="Wrap"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    

    【讨论】:

    • 我不想换行。
    • 好的...我不确定我是否理解这个问题。当您说“行”时,您是说它在包含 10000 个字符的行之后切断行吗?
    • 是的,假设我有两行文本。如果线条是正常长度,则网格将在数据网格中的单个文本块中显示两条线。如果第一行足够长,它将只显示第一行。
    • 我想我需要更多关于您的数据网格以及您在其上设置的属性的信息。我在一个测试项目中构建了一个简单的例子,没有任何问题。
    • 我无法复制这个问题。我所做的唯一更改是删除宽度绑定以换行文本,因为我不明白您为什么这样做?将列的宽度设置为自动,它似乎工作正常。
    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 2011-06-17
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2014-08-28
    相关资源
    最近更新 更多