我试图创建一个DataGrid CellStyle,它可以根据单元格中的数据类型来更改控制。
我已经尝试了很多方法来处理Template/ContentTemplate,ContentControl/ItemsControl和其他方法,但是除了字符串之外,没有任何东西会对任何东西做出React。我想要的是能够显示位图图像,如果这是一个单元格的数据。
数据网格的内容不是预先确定的,因此可以是各种数据,但是如果有位图,则将显示该图像。每个要显示的对象还可以有任何数量的属性。所以呢
datagrid的ItemsSource是PsCustomObject的ArrayList。如果CellStyle-setter被移除,所有数据都将显示为字符串,这是应该的。
有问题的数据网格:
<DataGrid>
<DataGrid.Style>
<Style TargetType="DataGrid">
<Setter Property="AlternationCount"
Value="2" />
<Setter Property="AutoGenerateColumns"
Value="True" />
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="DataGridCell" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
<Setter Property="HeadersVisibility"
Value="Column" />
<Setter Property="IsReadOnly"
Value="True" />
<Setter Property="ItemsSource"
Value="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=DataContext.Data}" />
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex"
Value="0">
<Setter Property="Background"
Value="Transparent" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex"
Value="1">
<Setter Property="Background"
Value="#e0e0e0" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Style>
</DataGrid>
编辑添加了关于每个对象(即行)的数据的说明
1条答案
按热度按时间4ktjp1zp1#
你应该可以通过使用
DataGridTemplateColumn
和CellTemplateSelector
,e来解决这个问题。例如:其思想是为XAML标记中的每种类型的对象定义一个
DataTemplate
,然后实现一个自定义的DataTemplateSelector
,以根据数据对象的属性valye选择适当的模板。例如: