使用C#和WPF,我试图将文本包装在DataGrid列中。我在后台代码中设置了DataGrid的ItemsSource,而不是使用数据绑定。
据我所知,数据网格没有'wrap'属性,但是可以将单元格数据嵌套在可以包装的文本块中。不幸的是,我见过的所有操作都在xaml中使用了数据绑定,这将需要大量的重构,所以我试图避免这种情况。
我的xaml项目:
<DataGrid x:Name="dgvOrderItems" AutoGeneratedColumns="DgvOrderItems_AutoGeneratedColumns" Height="570" VerticalAlignment="Stretch" Width="auto" HorizontalAlignment="Stretch" FontSize="10" Padding="0" Margin="0,20,0,0" ></DataGrid>
我后面的DgvOrderItems_AutoGeneratedColumns代码:
dgvOrderItems.SelectionUnit = DataGridSelectionUnit.FullRow;
dgvOrderItems.IsReadOnly = true;
dgvOrderItems.ColumnHeaderHeight = 15;
dgvOrderItems.Columns[0].Header = "Order Item";
dgvOrderItems.Columns[0].Width = 113;
dgvOrderItems.Columns[1].Visibility = Visibility.Hidden;
dgvOrderItems.Columns[2].Header = "Qty.";
dgvOrderItems.Columns[2].Width = 25;
到目前为止,如果长度超过指定的宽度,我还无法找到包装“订购商品”的好方法。
答案 0 :(得分:0)
来回处理它之后,我决定通过更好的数据绑定来重构@TerryTyson和@EdPlunkett所建议的内容。谢谢大家的建议。
XAML:
block_sizes <- c(3, 3, 4)
我的数据的类:
<DataGrid x:Name="dgvOrderItems" Height="570" VerticalAlignment="Stretch" Width="138" HorizontalAlignment="Stretch" FontSize="10" Padding="0" HorizontalScrollBarVisibility="Hidden">
<DataGrid.ColumnHeaderHeight>20</DataGrid.ColumnHeaderHeight>
<DataGrid.Columns>
<DataGridTextColumn Header="Order Item" Width="108" Binding="{Binding ItemNumber}">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Qty." Width="30" Binding="{Binding ItemQty}">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
设置我的ItemsSource:
public class SimpleOrderInfo
{
public string ItemNumber { get; set; }
public int ItemQty { get; set; }
public SimpleOrderInfo(string itemNumber, int itemQty)
{
this.ItemNumber = itemNumber;
this.ItemQty = itemQty;
}
}
我觉得仍然可能需要清理一些,但是它正在工作,并且比我刚开始使用时要干净得多。