![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
| |
| | #1 (permalink) |
| Guest | Binding to INotifyCollectionChanged event I am trying to bind a dependency property to an aggregate of a collection. I've implemented a wrapper around a Dictionary that implements INotifyCollectionChanged to fire the event when items are added or removed. Debugging through it I notice that there is nothing attached to the event after I bind to it which I expected the SetBinding to do as I don't know what delegate to bind to the event. I've tried a test with just an ObservableCollection to see if I was missing something but that doesn't work either. How do I wire up the event to the binding to get my test to pass? Here's my test code: [TestClass()] public class ObservableDictionaryTest : DependencyObject { public class MaxDoubleConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is IEnumerable<double>) { return ((IEnumerable<double>)value).Max(); // using Linq } throw new ArgumentException("Cannot covert " + value.GetType() + " to IEnumerable<double>", "value"); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } public double Max { get { return (double)GetValue(MaxProperty); } } public static readonly DependencyProperty MaxProperty = DependencyProperty.Register("Max", typeof(double), typeof(ObservableDictionaryTest), new PropertyMetadata(0.0)); [TestMethod()] public void TestBindingToObservableCollection() { ObservableCollection<double> values = new ObservableCollection<double>(); values.Add(1.0); values.Add(2.0); values.Add(3.0); Binding b = new Binding(); b.Converter = new MaxDoubleConverter(); b.Source = values; b.Mode = BindingMode.OneWay; BindingOperations.SetBinding(this, MaxProperty, b); Assert.AreEqual(3.0, Max); // this works values.Add(4.0); Assert.AreEqual(4.0, Max); // this doesn't values.Remove(4.0); Assert.AreEqual(3.0, Max); } } |
My System Specs![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| HELP need to solve this problem asap - Unable to start event viewer/event log service | Software | |||