实际开发中控件的数据源肯定是动态绑定的,不可能在xaml里写死item项。既然要绑定,就先来几个实体类:

上面是类图,各类的代码如下:
BusinessBaseObject
SelectedItemBase
NodeItem 主要用于treeview中的节点数据展示
MenuItem 主要用于菜单项展示
SampleData生成示例数据集合
TreeView、ContextMenu
为了将NoteItem中的IsSelected属性在绑定时自动转换成CheckBox的CheckState,需要写一个转换器
然后需要定义数据模板,如果需要右键弹出菜单,也一并加在里面
这里面用到了几个资源,定义在全局App.Xaml里
右键弹出菜单点击后,我们需要知道是在哪个节点上弹出的,以及我们选择了哪个菜单项,需要一些后端处理代码
运行效果图:
选择一个弹出菜单项后的效果:
PanelBar的Accordion效果
运行时截图:
TabPanel+Frame
为了节省空间,将多个界面以Tab标签页方式整合在一起是常见的用法,每个标签页的内容通常是实例化一个单独的Xaml模块,可以考虑每个标签页的内容以Frame形式嵌入一个xaml