C# 绑定到datatable的WPF datagrid
设置场景;我有2个数据表、资产和模型,以及一个绑定到资产数据表的datagrid;这些表是通过数据库拉入来填充的。创建新资产时,用户将从模型下拉列表中选择模型,“模型”组合框绑定到模型数据表,并显示模型表中的显示名称,而不是模型ID。模型下拉列表的文本字段更新新资产数据表并显示为ID,这是资产表链接到模型表的方式,也是导出时所需的 这一切目前都如预期的那样工作,但是为了方便用户,我希望在资产的datagrid视图中显示显示名称,而不是ID,但是我不想更改资产表中存在ID的事实,因为这是导出时所需的 在一个组合框中,我可以使用displaymemberpath显示不同的值,但是我找不到datagrid的等效值,也找不到实现我所追求的目标的方法,请提供帮助 datagrid的WPF代码(绑定到AssetCollection): 模型类的C#代码C# 绑定到datatable的WPF datagrid,c#,wpf,C#,Wpf,设置场景;我有2个数据表、资产和模型,以及一个绑定到资产数据表的datagrid;这些表是通过数据库拉入来填充的。创建新资产时,用户将从模型下拉列表中选择模型,“模型”组合框绑定到模型数据表,并显示模型表中的显示名称,而不是模型ID。模型下拉列表的文本字段更新新资产数据表并显示为ID,这是资产表链接到模型表的方式,也是导出时所需的 这一切目前都如预期的那样工作,但是为了方便用户,我希望在资产的datagrid视图中显示显示名称,而不是ID,但是我不想更改资产表中存在ID的事实,因为这是导出时所需
public class ModelCollection
{
public string SysID { get; set; }
public string SysUpdatedOn { get; set; }
public string DisplayName { get; set; }
}
资产的模型是一个sysid,它将存在于模型集合中
现在很明显,我还没有发布类或数据检索的所有初始化代码,但希望这足够有帮助。您可以隐藏列:
Data.Columns["IdColumn"].Visible = false;
您可以设置标题:
Data.Columns[0].HeaderText = "Something";
如果您有一些示例代码,我们可能会找到一些通用方法。问题已得到解决,我向名为ModelName的资产类添加了一个新字符串,并在通过查找models表关闭组合框下拉列表时对其进行了更新。(我还必须对资产集合实施inotifyproperty)
谢谢您的帮助。谢谢您的回复,我已经更新了我的主要帖子。您可以添加另一个
DataGridTextColumn
并将其绑定到Model.DisplayName
属性?或者我在这里遗漏了什么?理论上是的,我可以,但我需要根据资产模型sysid提取displayname。因此,asset.model=5因此displayname=model.sysid=5.displayname。在这种情况下,使用DataGridTemplateColumn
并使用MulitBinding
和转换器定义带有TextBlock
的模板。
public class ModelCollection
{
public string SysID { get; set; }
public string SysUpdatedOn { get; set; }
public string DisplayName { get; set; }
}
Data.Columns["IdColumn"].Visible = false;
Data.Columns[0].HeaderText = "Something";