- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 WPF 应用程序,它在 DataGrid
中包含文本。我希望文本包装在每个单元格内。我还想为每一列设置一个 MinWidth,如果必须,ScrollViewer
应该创建 horizonatl 滚动条。我从不希望任何单元格或 DataGrid
本身出现水平滚动条。如果用户调整窗口大小,行应该增大或缩小以适应文本换行,但不应让列变得太细以至于无法再阅读。
现在,文本不会换行,因为它在滚动查看器中。我知道我可以通过不同的方式来更改此示例以使文本换行,但我无法让它完全按照我想要的方式运行,如上所述。
<Window x:Class="SampleApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SampleApp"
Title="App" Height="350" Width="525">
<Window.Resources>
<Style x:Key="WrappingTextBlock" TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
<Style x:Key="WrappingTextBox" TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Stuff ... />
<MoreStuff ... />
<Border Grid.Row="1" Grid.Column="1">
<ScrollViewer>
<StackPanel>
<DataGrid HorizontalAlignment="Left" ItemsSource="{Binding AwesomeObject, Mode=TwoWay}" Margin="5" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="#" Binding="{Binding Number, Mode=TwoWay}"/>
<DataGridTextColumn Header="Header" Binding="{Binding Data, Mode=TwoWay}"/>
<DataGridTextColumn MinWidth="50" Header="Long Text" Binding="{Binding SoMuchText, Mode=TwoWay}" ElementStyle="{StaticResource WrappingTextBlock}" EditingElementStyle="{StaticResource WrappingTextBox}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</ScrollViewer>
</Border>
</Grid>
</Window>
最佳答案
尝试将列的宽度设置为“*”
<Border Grid.Row="1" Grid.Column="1">
<ScrollViewer>
<StackPanel>
<DataGrid HorizontalAlignment="Left" ItemsSource="{Binding AwesomeObject, Mode=TwoWay}" Margin="5" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Width="10*" Header="#" Binding="{Binding Number, Mode=TwoWay}"/>
<DataGridTextColumn Width="10*" Header="Header" Binding="{Binding Data, Mode=TwoWay}"/>
<DataGridTextColumn Width="50*" Header="Long Text" Binding="{Binding SoMuchText, Mode=TwoWay}" ElementStyle="{StaticResource WrappingTextBlock}" EditingElementStyle="{StaticResource WrappingTextBox}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</ScrollViewer>
</Border>
这意味着第 1 列的长度至少为 10 并且还在增长这意味着第 2 列的长度至少为 10 并且还在增长这意味着第 3 列的长度至少为 50 并且还在增长
您可以使用 * 使用百分比 (.Number*) 或长度 (Number*) 调整大小
关于c# - DataGrid 中的 TextWrapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8828848/
为什么是textwrap.wrap()和 textwrap.fill()太慢了?例如,在我的笔记本电脑上包装一个 10000 个字符的字符串需要将近两秒半。 $ python -m timeit -n
>>> import textwrap >>> string = "This is a very very very very very long string." >>> print textwra
我发现 python 的 textwrap 库在错误的地方断句。我正在使用: wrp = textwrap.TextWrapper(width=32,break_long_words=False,re
这里完全是编码初学者,第一次在这个好地方发帖。使用 Python 3.2.3。 简要说明 我想对字符串进行自动换行和字符填充,但应该忽略字符串的某些部分。 背景 我正在使用一个从 .txt 文件输出文
我在将文本包装在堆叠的列和行中时遇到了一些麻烦(而且我不太确定我是否在做良好的练习;))。我尝试使用 Flexible 而不是 Wrapped,但它也没有用。 代码: ListView(childre
在 Windows Phone 7 应用程序中,当我在网格中放置一个 TextBlock 并设置它的 HorizontalAlignment 时到“Center”和它的TextWrapping对于“W
当我将 TextBlock 放置在水平对齐的 StackPanel 内时,它不会换行。我意识到这是因为 StackPanel 的可用宽度是 PositiveInfinity,但是有什么解决方法吗? 我
目标 我有一个 WPF 应用程序,它在 DataGrid 中包含文本。我希望文本包装在每个单元格内。我还想为每一列设置一个 MinWidth,如果必须,ScrollViewer 应该创建 horizo
如何使用 textwrap 模块在一行达到一定字节数之前进行拆分(不拆分多字节字符)? 我想要这样的东西: >>> textwrap.wrap('☺ ☺☺ ☺☺ ☺ ☺ ☺☺ ☺☺', bytewid
在 WPF 窗口中拖放一些控件(如 TextBox)后,您可以在 XAML 中看到下面的行 这些属性会自动插入到 XAML 中!只是在 XAML 中插入了一些特殊属性。 问题: 为什么只有这些特殊属
我有一个 UserControl,它有几个按钮和一些 Textblock。出于某种原因,TextWrap 不适用于此文本 block 。
在使用 Python 的 textwrap 库时,如何将其转换为: short line, long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
我不确定为什么我的代码没有正确执行 TextWrapping。它不会包装 Description 列的文本(这是我想要的)。它只是将其切断,甚至不使用“...”来让我知道有更多数据。 我尝试使用我在网
好的...所以this解决方案没有帮助 XAML 在这里
我有以下组合框 我希望将文本换行应用于此组合框,并遵循答案 here 中的代码片段 但是这个模板破坏了绑定(bi
我正在尝试使用 textwrap 来格式化导入文件,该文件的格式化方式非常特殊。基本上如下(为简单起见,缩短了行长): abcdef <- Ok line abcdef ghijk <- Note
我正在动态生成一个 DataGrid 并将其添加到我的 WPF 应用程序的 StackPanel 中。 由于是动态生成的,因此在 XAML 端没有相同的标记,我需要以编程方式管理绑定(bind)和所有
我在 Windows Phone 中遇到了一个看似简单的布局问题。问题如下图所示: 我的要求如下: 副标题必须始终可见,但要以标题文本溢出为代价。 标题和副标题必须垂直和水平居中。 当我使用 Stac
所以我只是重新格式化了一堆代码以合并 textwrap.wrap,却发现我所有的\n 都不见了。这是一个例子。 from textwrap import wrap def wrapAndPrint (
我有一个文本,由几个段落组成,段落之间用双换行符分隔。我想将它们格式化为 70 行宽,保留新行,整个内容应该以一个非缩进行开始,并带有 Abstract: Lorem ipsum ...。 所以整个事
我是一名优秀的程序员,十分优秀!