Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到datatable的WPF datagrid_C#_Wpf - Fatal编程技术网

C# 绑定到datatable的WPF datagrid

C# 绑定到datatable的WPF datagrid,c#,wpf,C#,Wpf,设置场景;我有2个数据表、资产和模型,以及一个绑定到资产数据表的datagrid;这些表是通过数据库拉入来填充的。创建新资产时,用户将从模型下拉列表中选择模型,“模型”组合框绑定到模型数据表,并显示模型表中的显示名称,而不是模型ID。模型下拉列表的文本字段更新新资产数据表并显示为ID,这是资产表链接到模型表的方式,也是导出时所需的 这一切目前都如预期的那样工作,但是为了方便用户,我希望在资产的datagrid视图中显示显示名称,而不是ID,但是我不想更改资产表中存在ID的事实,因为这是导出时所需

设置场景;我有2个数据表、资产和模型,以及一个绑定到资产数据表的datagrid;这些表是通过数据库拉入来填充的。创建新资产时,用户将从模型下拉列表中选择模型,“模型”组合框绑定到模型数据表,并显示模型表中的显示名称,而不是模型ID。模型下拉列表的文本字段更新新资产数据表并显示为ID,这是资产表链接到模型表的方式,也是导出时所需的

这一切目前都如预期的那样工作,但是为了方便用户,我希望在资产的datagrid视图中显示显示名称,而不是ID,但是我不想更改资产表中存在ID的事实,因为这是导出时所需的

在一个组合框中,我可以使用displaymemberpath显示不同的值,但是我找不到datagrid的等效值,也找不到实现我所追求的目标的方法,请提供帮助

datagrid的WPF代码(绑定到AssetCollection):

模型类的C#代码

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";