diff --git a/Torch/Views/EmbeddedCollectionEditor.xaml b/Torch/Views/EmbeddedCollectionEditor.xaml
index fac4d11..76837d4 100644
--- a/Torch/Views/EmbeddedCollectionEditor.xaml
+++ b/Torch/Views/EmbeddedCollectionEditor.xaml
@@ -8,6 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300">
+
@@ -15,17 +16,23 @@
-
+
+
+
+
+
+
-
-
-
+
-
diff --git a/Torch/Views/EmbeddedCollectionEditor.xaml.cs b/Torch/Views/EmbeddedCollectionEditor.xaml.cs
index ff5a859..c2ebd41 100644
--- a/Torch/Views/EmbeddedCollectionEditor.xaml.cs
+++ b/Torch/Views/EmbeddedCollectionEditor.xaml.cs
@@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
@@ -78,12 +79,15 @@ namespace Torch.Views
public void Edit(ICollection collection) where T : new()
{
var oc = collection as ObservableCollection ?? new ObservableCollection(collection);
+ bool not = typeof(INotifyPropertyChanged).IsAssignableFrom(typeof(T));
AddButton.Click += (sender, args) =>
{
var t = new T();
oc.Add(t);
ElementList.SelectedItem = t;
+ if (not)
+ ((INotifyPropertyChanged)t).PropertyChanged += (o, eventArgs) => RefreshList();
};
RemoveButton.Click += RemoveButton_OnClick;
@@ -91,6 +95,11 @@ namespace Torch.Views
ElementList.ItemsSource = oc;
oc.CollectionChanged += (sender, args) => RefreshList();
+ if (not)
+ {
+ foreach(var t in oc)
+ ((INotifyPropertyChanged)t).PropertyChanged += (o, eventArgs) => RefreshList();
+ }
if (!(collection is ObservableCollection))
{
@@ -121,6 +130,34 @@ namespace Torch.Views
{
ElementList.Items.Refresh();
}
+
+ private void TopButton_Click(object sender, RoutedEventArgs e)
+ {
+ var i = ElementList.SelectedItems[0];
+ ElementList.Items.Remove(i);
+ ElementList.Items.Insert(0, i);
+ }
+ private void BottomButton_Click(object sender, RoutedEventArgs e)
+ {
+ var i = ElementList.SelectedItems[0];
+ ElementList.Items.Remove(i);
+ ElementList.Items.Add(i);
+ }
+ private void UpButton_Click(object sender, RoutedEventArgs e)
+ {
+ var i = ElementList.SelectedItems[0];
+ var idx = ElementList.SelectedItems.IndexOf(i);
+ ElementList.Items.Remove(i);
+ ElementList.Items.Insert(Math.Max(0, idx), i);
+ }
+ private void DownButton_Click(object sender, RoutedEventArgs e)
+ {
+ var i = ElementList.SelectedItems[0];
+ var idx = ElementList.SelectedItems.IndexOf(i);
+ ElementList.Items.Remove(i);
+ var mx = ElementList.Items.Count - 1;
+ ElementList.Items.Insert(Math.Min(idx, mx), i);
+ }
}
}