求助,WPF中关于treeview中的DataType="{x:Type local:Node}报错问题

KyKiske22 2017-03-02 02:20:29
初学wpf,自己写了个wpf玩,但是对treeview绑定数据总有疑问,结合了自己往上找了个案例,前端内容如下:
前端代码:
<TreeView Name="TreeView_NodeList">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Node}" ItemsSource="{Binding Nodes,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<StackPanel Orientation="Horizontal" Margin="0,2,0,2">
<TextBlock Text="{Binding NodeName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ToolTip="{Binding NodeName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

后台代码:
namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

public List<Node> nodeList { get; set; }
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("欢迎光临!", "信息提示", MessageBoxButton.OK);
List<ItemsDetails> buyItems = new BuyItemManager().SeLectBuyItem();
dg_Items.ItemsSource = buyItems;
//LoadGroupTree();
nodeList = GetNodeList();
this.TreeView_NodeList.ItemsSource = nodeList;
}

private List<Node> GetNodeList()
{
Node leafOneNode = new Node();
leafOneNode.NodeName = "叶子节点一";
leafOneNode.NodeContent = "我是叶子节点一";
leafOneNode.NodeType = NodeType.LeafNode;
leafOneNode.Nodes = new List<Node>();

Node leafTwoNode = new Node();
leafTwoNode.NodeName = "叶子节点二";
leafTwoNode.NodeContent = "我是叶子节点二";
leafTwoNode.NodeType = NodeType.LeafNode;
leafTwoNode.Nodes = new List<Node>();

Node leafThreeNode = new Node();
leafThreeNode.NodeName = "叶子节点三";
leafThreeNode.NodeContent = "我是叶子节点三";
leafThreeNode.NodeType = NodeType.LeafNode;
leafThreeNode.Nodes = new List<Node>();

Node secondLevelNode = new Node();
secondLevelNode.NodeName = "二级节点";
secondLevelNode.NodeContent = "我是二级节点";
secondLevelNode.NodeType = NodeType.StructureNode;
secondLevelNode.Nodes = new List<Node>() { leafOneNode, leafTwoNode, leafThreeNode };

Node firstLevelNode = new Node();
firstLevelNode.NodeName = "一级节点";
firstLevelNode.NodeContent = "我是一级节点";
firstLevelNode.NodeType = NodeType.StructureNode;
firstLevelNode.Nodes = new List<Node>() { secondLevelNode };

return new List<Node>()
{
new Node(){NodeName="根节点",NodeContent="我是根节点",NodeType=NodeType.RootNode,Nodes=new List<Node>(){firstLevelNode}}
};
}
}
模型类:
namespace WpfApplication1
{
public class Node
{
public Node()
{
this.NodeId = Guid.NewGuid().ToString();
this.IsDeleted = false;
this.Nodes = new List<Node>();
}

/// <summary>
/// 节点ID
/// </summary>
public string NodeId { get; set; }

/// <summary>
/// 节点名称
/// </summary>
public string NodeName { get; set; }

/// <summary>
/// 节点携带的内容
/// </summary>
public string NodeContent { get; set; }

/// <summary>
/// 被删除
/// </summary>
public bool IsDeleted { get; set; }

/// <summary>
/// 节点类型
/// </summary>
public NodeType NodeType { get; set; }

/// <summary>
/// 子节点集合
/// </summary>
public List<Node> Nodes { get; set; }
}
public enum NodeType
{
RootNode,//根节点
LeafNode,//叶子节点
StructureNode//结构节点,仅起到组织配置文件结构的作用,不参与修改
}
}

出错:local是未声明的命名空间。未找到类型local:Node
求问这个错误如何解决呢?万分感谢!!
...全文
541 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
忆心仇 2019-01-16
  • 打赏
  • 举报
回复
引用 1 楼 理论自信不靠删贴 的回复:
在xaml里面,要声明local命名空间,类似:

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
....


这个方法不行,解决不了。
忆心仇 2019-01-16
  • 打赏
  • 举报
回复
引用 2 楼 KyKiske22 的回复:
[quote=引用 1 楼 Forty2 的回复:]
在xaml里面,要声明local命名空间,类似:

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
....

可以了,谢谢。[/quote]

同样的例子,同样的问题,怎么解决的??看我下面这个图,已经加了楼上那句代码了,还是不行。
KyKiske22 2017-03-02
  • 打赏
  • 举报
回复
引用 1 楼 Forty2 的回复:
在xaml里面,要声明local命名空间,类似: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication1" ....
可以了,谢谢。
Forty2 2017-03-02
  • 打赏
  • 举报
回复
在xaml里面,要声明local命名空间,类似: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication1" ....

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧