Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
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.

Go Back   Vista Forums > Misc Newsgroups > Avalon

Vista Tutorial - Binding to INotifyCollectionChanged event

 
 
Old 06-09-2008   #1 (permalink)
Some Bloke
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 SpecsSystem Spec
 

Thread Tools


Similar Threads
Thread Forum
HELP need to solve this problem asap - Unable to start event viewer/event log service Software


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46