wpf - wpf - 将自动生成的列数据网格绑定到值的属性
问题描述
MyDataTable
包含每列的复合类型的值,目标是用于显示属性和按属性设置Value
样式State
public class PairData
{
public string Value { get; set; }
public int State { get; set; }
}
可以像菜单一样配置数据网格:
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Column1.Value}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Column1.State}" Value="1">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
但我想使用 dinmicly 生成列AutoGenerateColumns="True"
有没有办法绑定“值”属性的所有列?也许是这样的:
<DataGrid ItemsSource="{Binding Path=Source}" >
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Foreground" Value="Black" />
<Setter Property="TextBlock.Text" Value="{Binding Value}"/>
</Style>
</DataGrid.CellStyle>
</DataGrid>
我收到一个错误:
System.Windows.Data Error: 40 : BindingExpression path error: 'Value' property not found on 'object' ''DataRowView' (HashCode=15375790)'. BindingExpression:Path=Value; DataItem='DataRowView' (HashCode=15375790); target element is 'DataGridCell' (Name=''); target property is 'Text' (type 'String')
解决方案
您应该将 替换为DataTable
实现IEnumerable<PairData>
(例如 a List<PairData>
)。
您不能真正存储自定义对象PairData
,例如 a DataRow
of a DataTable
:
推荐阅读
- angular - 如何在我的 Angular 4 项目中导入 wavesurfer.js?
- python - 从列表中删除重复列表
- c# - Datagridview在选择复选框时崩溃
- html - 网格模板区域没有响应
- python - 如何使用python3连续解析带有GET query_hash的instagram?
- python-3.x - 从数据框中删除超过 98% 的特征为零的行
- c# - 如何在 SQL Server c# 中将空值插入图像列
- amazon-s3 - 我可以在没有 S3 的情况下使用 AWS Sagemaker
- templates - Typo3 中的单页布局
- python - 当约束不满足时,Scipy optimize.minimize 成功退出