using Com.FirmLib.Entity;
using FWindSoft.Wpf.Controls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Markup;
using System.Windows.Media;
using WPG;
namespace Com.FirmLib.UI.Common
{
///
/// 信息点模板管理
///
public class InfoPointTemplateParse : ITemplateParse
{
private static Dictionary m_RefDataTemplates = new Dictionary();
static InfoPointTemplateParse()
{
ResourceDictionary dic = new ResourceDictionary();
PropertyGrid gr = new PropertyGrid();
dic.Source = new Uri("/Com.FirmLib.UI;component/Common/CellTemplates.xaml", UriKind.Relative);
//dic.Source = new Uri("/TemplateLib;component/DataGrid/CellTemplates.xaml", UriKind.Relative);
//dic.MergedDictionaries.Add(ResourceManager.DataGridCellTemplate);
foreach (var key in dic.Keys)
{
DataTemplate tempTemplate = dic[key] as DataTemplate;
if (tempTemplate != null)
{
m_RefDataTemplates.Add(key.ToString(), tempTemplate);
}
}
}
///
/// 根据信息点的信息去创建某值
///
///
public DataTemplate SelectTemplate(object ob)
{
var geDefinition = ob as EquipmentInfoPointItem;
if (geDefinition == null)
return CreateDefaultTemplate();
//var id = geDefinition.CollectionCmptCode;
//if(string.IsNullOrEmpty(id))
// return CreateDefaultTemplate();
string controlId = geDefinition.CollectionCmptCode;
if (string.IsNullOrEmpty(geDefinition.CollectionCmptCode))
{
controlId = geDefinition.InputType;
}
if (controlId == "E1")
{
controlId = "Enum_D1";
}
DataTemplate template;
if (!m_RefDataTemplates.TryGetValue(controlId, out template))
{
template = CreateDefaultTemplate();
}
return template;
}
private DataTemplate CreateDefaultTemplate()
{
DataTemplate temp = new DataTemplate();
FrameworkElementFactory root = new FrameworkElementFactory(typeof(TextBlock));
Binding binding = new Binding("Value");
root.SetBinding(TextBlock.TextProperty, binding);
temp.VisualTree = root;
temp.Seal();
return temp;
}
#region 构造解析器
///
/// 创建模板解析器
///
///
public static CommonTemplateProvider CreateTemplateManager()
{
CommonTemplateProvider commonTemplate = new CommonTemplateProvider();
InfoPointTemplateParse pasrse = new InfoPointTemplateParse();
commonTemplate.Add(typeof(EquipmentInfoPointItem), pasrse);
return commonTemplate;
}
#endregion
}
}