<?xml version="1.0"?>
<TreeView Height="90%" Width="90%" Data="{CurDirectory}">
<ItemTemplate DataType="System.IO.FileInfo">
- <Label Background="Mantis" Text="{}" Width="Stretched"/>
+ <Label Background="Mantis" Text="{Name}" Width="Stretched"/>
<!-- <Expandable Caption="{}">
<Template>
<Border BorderWidth="1" Foreground="LightGray" Height="{../HeightPolicy}" Width="{../WidthPolicy}"
Height="{../../HeightPolicy}" Width="{../../WidthPolicy}"/>
</VerticalStack>
</Template>
+ <ListBox Name="List" Height="Fit" Width="{../WidthPolicy}" />
</Expandable>
</ItemTemplate>
</TreeView>
\ No newline at end of file
itemTemplates = new Dictionary<string, ItemTemplate> ();
//TODO:check encoding
itemTemplates[dataType] = new ItemTemplate (Encoding.UTF8.GetBytes(itemTmp));
- itemTemplates [dataType].CreateExpandDelegate(dataType, datas);
+ if (!string.IsNullOrEmpty (datas))
+ itemTemplates [dataType].CreateExpandDelegate(dataType, datas);
continue;
}
public void CreateExpandDelegate (string strDataType, string method){
Type dataType = Type.GetType(strDataType);
- Type host_type = typeof(ItemTemplate);//not sure is the best place to put the dyn method
- Type evt_type = typeof(EventHandler);
+ Type hostType = typeof(ItemTemplate);//not sure is the best place to put the dyn method
+ Type evtType = typeof(EventHandler);
+ Type listBoxType = typeof(ListBox);
- MethodInfo evtInvoke = evt_type.GetMethod ("Invoke");
+ MethodInfo evtInvoke = evtType.GetMethod ("Invoke");
ParameterInfo [] evtParams = evtInvoke.GetParameters ();
Type handlerArgsType = evtParams [1].ParameterType;
DynamicMethod dm = new DynamicMethod ("dyn_expand_" + method,
typeof (void),
args,
- host_type);
+ hostType);
#region IL generation
ILGenerator il = dm.GetILGenerator (256);
+ il.Emit (OpCodes.Ldarg_1);
+
+ MethodInfo miFindByName = typeof(GraphicObject).GetMethod("FindByName");
+ il.Emit(OpCodes.Ldstr, "List");
+ il.Emit (OpCodes.Callvirt, miFindByName);
+
+ il.Emit (OpCodes.Ldarg_1);
+ il.Emit (OpCodes.Callvirt, typeof(GraphicObject).GetProperty("DataSource").GetGetMethod ());
+
+ MethodInfo miGetDatas = dataType.GetMethod (method, new Type[] {});
+ il.Emit (OpCodes.Callvirt, miGetDatas);
+
+ il.Emit (OpCodes.Callvirt, listBoxType.GetProperty("Data").GetSetMethod ());
+
il.Emit (OpCodes.Ret);
#endregion
- Expand = (EventHandler)dm.CreateDelegate (evt_type, this);
+ Expand = (EventHandler)dm.CreateDelegate (evtType, this);
}
}
}
internal bool XmlLoading = false;
+ public Dictionary<string,object> Ressources = new Dictionary<string, object>();
public Queue<LayoutingQueueItem> LayoutingQueue = new Queue<LayoutingQueueItem> ();
public Queue<LayoutingQueueItem> DiscardQueue;
public Queue<LayoutingQueueItem> ProcessedLayoutingQueue;