搜了一下资源比较少,记录一下
先看这个需求,要求这一列后台绑定的数据是List<string> 链表,容易想到的是利用DataGridTemplateColumn自定义一列,然后修改这一列的显示方式:
<!--自定义单元格的模版-->
<DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding ClassId}"></TextBlock></DataTemplate>
</DataGridTemplateColumn.CellTemplate>
再细致一点,第一步要选取集合控件承载List,WPF中集合控件链接:WPF-常见集合控件(ItemsControl、ListView、DataGrid、TreeView、TabControl.......)_wpf控件库-CSDN博客
凭感觉比较适用的是 ItemsControl 、ListBox、ListView;其中 ListView经常用来显示多列的表格,这里只用一列显示就可以,所以放弃;
先不着急确定哪个,一个一个试:
<DataGridTemplateColumn.CellTemplate><DataTemplate><ListBox x:Name="MyListBox"ItemsSource="{Binding EqpMessageItemList}"Width="200"Height="150"><ListBox.ItemTemplate><DataTemplate><TextBlock Text="{Binding .}" /></DataTemplate></ListBox.ItemTemplate></ListBox></DataTemplate>
</DataGridTemplateColumn.CellTemplate>
简单写一下,看一下效果:
可以显示多行,但是由于样式的问题,每个单元格就是一个ListBox控件,有中被撑大的感觉;
改变一下ListBox的Height为Auto:
好看一些了,再改变一下边框什么的就好了,这里不赘述;
接下来尝试ItemsControl:
还是先搜索一下常见用法:WPF控件-ItemsControl介绍和用法_wpf itemscontrol-CSDN博客
<ItemsControl ItemsSource="{Binding Items}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><StackPanel /></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate DataType="{x:Type xxClass}"><TextBlock Width="268" Margin="8" Text="{Binding Name}"/></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>
改变一下数据变为自己的:
<DataGridTemplateColumn.CellTemplate><DataTemplate><ItemsControl ItemsSource="{Binding EqpMessageItemList}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><StackPanel /></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate><TextBlock Text="{Binding .}" /></DataTemplate></ItemsControl.ItemTemplate></ItemsControl></DataTemplate></DataGridTemplateColumn.CellTemplate>
看一下效果:
看起来比ListBox更合适 ;
调整功能一下CellStyle:
先这样吧。
总结:要对常见的列表控件有一定的了解,才能尝试。