我的WPF应用程序中有一个数据网格。
此数据网格绑定到一个ObservableCollection,该集合称为OperationClasses,定义如下。
类型OperationClass由3个属性组成,分别为Name、Start和End。
我想知道如何将OperationClass作为datagrid行添加到DataGridList,方法是单击带有文本“new Operation Class”的最后一行,如图中所示(作为附件)。
具有示例值的DataGrid图片:
最终用户输入名称以及起始值和终止值后,文本“new Operation Class”将显示在下一行,即新的最后一行。
如何使用DataGrid中列出的数据绑定对象编写静态文本“new Operation Class”?
public ObservableCollection<OperationClass> OperationClasses
{
get
{
return _operationClasses;
}
set
{
SetProperty(ref _operationClasses, value);
}
}
我试图找到一种方法来使用CompositeCollection,以便组合数据绑定对象(OperationClass)和静态文本“新操作类”。但在当前阶段我无法成功。
2条答案
按热度按时间rsl1atfo1#
首先,我想感谢你的宝贵的职位。但我有一些关于添加新项目操作的问题。我定义的问题,通过分享相应的图像如下所示。用户输入名称和开始和结束值后,然后文本“新操作类”应显示在下一行,这是新的最后一行。换句话说,属性名称,“开始”和“结束”是必须填写的列,以便占位符显示在下一行中。除此之外,即使我可以选择新项目占位符行作为选定行,但我不能为数据绑定记录这样做。如果您有机会通知我,我将非常高兴。
Before adding new Item
After adding new item
Selected New Item Row
Selected Data Bound Item Row
为了使它更简单,我将分享如下所示的XAML代码。
pzfprimi2#
您需要提供一个
DataTemplateSelector
,以便将专用的DataTemplate
应用于占位符列。首先,占位符项(或占位符表格行)必须通过将
DataGrid.CanUserAddRows
设置为true
来启用。默认值为true
,因此请确保不要显式将其设置为false
。下面的示例假定您希望占位符文本填充第一列。但是,您可以按照下面的模式为任何列添加占位符文本。
按照您的代码,该示例假定用于填充
DataGrid
的数据模型是OperationClass
,它具有两个虚构属性以构成两列:操作类.cs
首先,定义
DataTemplateSelector
:操作类模板选择器.cs
第二步是显式定义列模板。
将包含占位符文本的列定义为
DataGridTemplateColumn
非常重要。这是允许分配DataTemplateSelector
实现所必需的。占位符行的第一列将显示 “Add new item..." 作为占位符文本: