diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2017-01-24 12:11:30 +0100 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2017-01-24 12:13:15 +0100 |
| commit | e39ac936765e88382d858ee6922293315a18b60d (patch) | |
| tree | dc02055f74f1431a3f5755c470d3c9b6e40cddcf /src | |
| parent | 0004f96d68df2cc66717f469cc9151284ed7cea6 (diff) | |
dataType for expandable itemTemplate use 'isAssignableFrom'; GraphicTree View
Diffstat (limited to 'src')
| -rw-r--r-- | src/GraphicObjects/TemplatedGroup.cs | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/GraphicObjects/TemplatedGroup.cs b/src/GraphicObjects/TemplatedGroup.cs index f636786d..ee799fd0 100644 --- a/src/GraphicObjects/TemplatedGroup.cs +++ b/src/GraphicObjects/TemplatedGroup.cs @@ -106,11 +106,11 @@ namespace Crow public virtual List<GraphicObject> Items{ get { return items.Children; }} [XmlAttributeAttribute][DefaultValue(-1)]public int SelectedIndex{ get { return _selectedIndex; } - set { + set { if (value == _selectedIndex) return; - _selectedIndex = value; + _selectedIndex = value; NotifyValueChanged ("SelectedIndex", _selectedIndex); NotifyValueChanged ("SelectedItem", SelectedItem); @@ -179,7 +179,7 @@ namespace Crow protected void raiseSelectedItemChanged(){ SelectedItemChanged.Raise (this, new SelectionChangeEventArgs (SelectedItem)); } - + public virtual void AddItem(GraphicObject g){ items.AddChild (g); @@ -313,7 +313,7 @@ namespace Crow if (loadingThread == null) return; if (!loadingThread.IsAlive) - return; + return; cancelLoading = true; loadingThread.Join (); cancelLoading = false; @@ -341,7 +341,7 @@ namespace Crow page = gs; }else - page = Activator.CreateInstance (items.GetType ()) as Group; + page = Activator.CreateInstance (items.GetType ()) as Group; page.Name = "page" + pageNum; @@ -383,9 +383,20 @@ namespace Crow itempKey = getItempKey (dataType, data [i]); if (ItemTemplates.ContainsKey (itempKey)) - iTemp = ItemTemplates [itempKey]; - else - iTemp = ItemTemplates ["default"]; + iTemp = ItemTemplates [itempKey]; + else { + foreach (string it in ItemTemplates.Keys) { + Type t = Type.GetType (it); + if (t == null) + continue; + if (t.IsAssignableFrom (dataType)) {//TODO:types could be cached + iTemp = ItemTemplates [it]; + break; + } + } + if (iTemp == null) + iTemp = ItemTemplates ["default"]; + } lock (CurrentInterface.LayoutMutex) { g = iTemp.CreateInstance(CurrentInterface); |