using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml;
using System.Data;
using System.Reflection;
using AvalonDock;
namespace SiaSun.LMS.WPFClient.SYS
{
///
/// WINDOW_STYLE.xaml 的交互逻辑
///
public partial class WINDOW_STYLE : DocumentContent
{
XmlDocument xmlDoc = null;
XmlNode nodeRoot = null;
DataTable tableDescription = null;
public WINDOW_STYLE()
{
InitializeComponent();
}
///
/// 加载窗体
///
private void DocumentContent_Loaded(object sender, RoutedEventArgs e)
{
//加载XML文档
LoadXml();
//加载所有窗体样式
LoadFormStyles();
//初始化表结构
InitDataTable();
}
//加载XML文档
private void LoadXml()
{
try
{
xmlDoc = new XmlDocument();
xmlDoc.Load(MainApp.File_FormStyles_Path);
//判断文档是否加载
if (xmlDoc != null)
{
//判断根节点是否存在
nodeRoot = xmlDoc.SelectSingleNode("Styles");
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
//加载所有存在的样式
private void LoadFormStyles()
{
this.tvwWinStyles.Items.Clear();
foreach (XmlNode nodeXml in nodeRoot.ChildNodes)
{
try
{
if (nodeRoot.ChildNodes == null)
continue;
if (nodeXml.NodeType == XmlNodeType.Comment)
continue;
//添加列表
TreeViewItem itemWindow = new TreeViewItem();
itemWindow.Header = nodeXml.Attributes[0].InnerText;
itemWindow.Tag = itemWindow.Header;
this.tvwWinStyles.Items.Add(itemWindow);
//判断表节点是否存在
foreach (XmlNode nodeTable in nodeXml.SelectNodes("Table"))
{
TreeViewItem item = new TreeViewItem();
item.Header = nodeTable.Attributes[0].Value;
item.Tag = item.Header;
itemWindow.Items.Add(item);
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
}
//初始化DataTable
private DataTable InitDataTable()
{
//从实体类中加载属性信息
Assembly assemblyModel = Assembly.LoadFrom(MainApp._APP_PATH + "SiaSun.LMS.Model.dll");
if (assemblyModel == null)
return null;
Module moduleModel = assemblyModel.ManifestModule;
Type typeModel = moduleModel.GetType(assemblyModel.GetName().Name + ".FIELD_DESCRIPTION");
if (typeModel == null)
return null;
//声明datatable并添加列
tableDescription = new DataTable("FIELD_DESCRIPTION");
SiaSun.LMS.Model.FIELD_DESCRIPTION mFIELD_DESCRIPTION = new SiaSun.LMS.Model.FIELD_DESCRIPTION();
foreach (PropertyInfo propertyInfo in typeModel.GetProperties())
{
DataColumn column = new DataColumn(propertyInfo.Name, propertyInfo.PropertyType);
column.DefaultValue = propertyInfo.GetValue(mFIELD_DESCRIPTION, null).ToString();
tableDescription.Columns.Add(column);
}
return tableDescription;
}
//删除样式定义
private void menuItemDelete_Click(object sender, RoutedEventArgs e)
{
if (this.tvwWinStyles.SelectedItem == null)
return;
if (MainApp._MessageDialog.ShowDialog("Delete",null) == Sid.Windows.Controls.TaskDialogResult.Ok)
{
TreeViewItem itemSelected = this.tvwWinStyles.SelectedItem as TreeViewItem;
TreeViewItem itemParent = itemSelected.Parent as TreeViewItem;
try
{
if (itemParent == null)
{
string strFormName = itemSelected.Header.ToString();
XmlNode nodeForm = nodeRoot.SelectSingleNode(string.Format("Form[@Name='{0}']", strFormName));
if (nodeForm != null)
{
nodeRoot.RemoveChild(nodeForm);
}
//移除节点
this.tvwWinStyles.Items.Remove(itemSelected);
this.gridStyles.ItemsSource = null;
}
else
{
string strFormName = itemParent.Header.ToString();
string strTableName = itemSelected.Header.ToString();
XmlNode nodeForm = nodeRoot.SelectSingleNode(string.Format("Form[@Name='{0}']", strFormName));
if (nodeForm != null)
{
XmlNode nodeTable = nodeForm.SelectSingleNode(string.Format("Table[@Name='{0}']", strTableName));
if (nodeForm != null)
{
nodeForm.RemoveChild(nodeTable);
//移除节点
itemParent.Items.Remove(itemSelected);
this.gridStyles.ItemsSource = null;
}
}
}
//保存并重新加载
xmlDoc.Save(MainApp.File_FormStyles_Path);
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
}
}
#region ------点击节点显示窗体样式配置
///
/// 选择节点显示该节点信息
///
private void tvwWinStyles_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs