我正在尝试使用声明性绑定将实体框架对象绑定到树视图。对象所基于的SQL表是一个SQL层次表。这是模式:
CREATE TABLE [dbo].[lkpSource](
[OrgNode] [hierarchyid] NOT NULL,
[OrgLevel] AS ([OrgNode].[GetLevel]()),
[ID] [uniqueidentifier] NOT NULL,
[Title] [nvarchar](50) NOT NULL,
[HierarchyString] AS ([OrgNode].ToString()) PERSISTED,
CONSTRAINT [PK__lkpSourc__C1ECAF2A53908500]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[lkpSource] ADD DEFAULT (newid()) FOR [ID]
GO
string字段来自于我试图使绑定起作用的多种技术之一,在代码中,我还在属性声明的上方添加了[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
。
我在XAML窗口中有一个数据源。资源:
<CollectionViewSource x:Key="sourceViewSource"
d:DesignSource="{d:DesignInstance {x:Type
local:lkpSource}, CreateList=True}"/>
类似的数据源已成功绑定到应用程序中的数据网格,因此我似乎已经正确设置了上下文,并且一切都设置正确。
我花了大约12个小时来尝试在互联网上发现的各种不太适用的东西-他们没有使用实体框架,或者没有使用层次结构数据,或者不是WPF-什么都不起作用,甚至差一点。
可以声明性地绑定它吗?如果是这样,有人可以发布一个简短的Treeview XAML示例吗?我需要查看的唯一一列是标题。如果不可能以声明方式进行绑定,那么有人可以向我指出一个包含所有涉及因素的教程,包括层次结构数据,实体框架和WPF吗?谢谢。
Visual Studio 2017目标4.7.1 SQL Server 2017 实体框架6.2
更新:如果有帮助,请将此属性添加到项目中的lkpSource.cs中。
public SqlHierarchyId? OrgNode
{
get
{
return SqlHierarchyId.Parse(HierarchyString);
}
set
{
OrgNode = value;
}
}