title: Complex databinding issue
body: <p>Im trying develope a databound polyline canvas. 
  Currently I databind a list of classes each containing an pointcollection and an offset. However I want to customize each of these lines further eg, their colour. Therefore I want to create a List inside the class containing a polyline model class. Which contain a pointcollection, offset X, Y and data for the polylines colour.</p>
  
  <p>Currently it looks like this:</p>
  
  <pre><code>                &lt;Canvas Name="PolyLineCanvas" Width ="100" Height="100"&gt;
                      &lt;ItemsControl ItemsSource="{Binding WaypointList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnTargetUpdated=True}"&gt;
                          &lt;ItemsControl.ItemsPanel&gt;
                              &lt;ItemsPanelTemplate&gt;
                                  &lt;Canvas/&gt;
                              &lt;/ItemsPanelTemplate&gt;
                          &lt;/ItemsControl.ItemsPanel&gt;
                          &lt;ItemsControl.ItemContainerStyle&gt;
                              &lt;Style TargetType="ContentPresenter"&gt;
                                  &lt;Setter Property="Canvas.Left" Value="{Binding Path=TracedPathLeft, UpdateSourceTrigger=PropertyChanged}"/&gt;
                                  &lt;Setter Property="Canvas.Top" Value="{Binding Path=TracedPathTop, UpdateSourceTrigger=PropertyChanged}"/&gt;
                              &lt;/Style&gt;
                          &lt;/ItemsControl.ItemContainerStyle&gt;
                          &lt;ItemsControl.ItemTemplate&gt;
                              &lt;DataTemplate&gt;
                                  &lt;Polyline Stroke="Magenta" Points="{Binding TracedPath}" StrokeThickness="0.0244"&gt;&lt;/Polyline&gt;
                              &lt;/DataTemplate&gt;
                          &lt;/ItemsControl.ItemTemplate&gt;
                      &lt;/ItemsControl&gt;
                  &lt;/Canvas&gt;
  </code></pre>
  
  <p>And class:</p>
  
  <pre><code>public class WaypointListModel : INotifyPropertyChanged
  {
  
      public class Waypoint : INotifyPropertyChanged
      {
          ObservableCollection&lt;Waypoint&gt; wptList;
  
          PointCollection tracedPath;
          double tracedPathTop;
          double tracedPathLeft;
  
          public Waypoint(ObservableCollection&lt;Waypoint&gt; WptList)
          {
              wptList = WptList;
          }
  
          public PointCollection TracedPath
          {
              get
              {
                  return tracedPath;
              }
              set
              {
                  tracedPath = value;
              }
          }
  
          public double TracedPathTop
          {
              get
              {
                  return tracedPathTop;
              }
              set
              {
                  tracedPathTop = value;
              }
          }
  
          public double TracedPathLeft
          {
              get
              {
                  return tracedPathLeft;
              }
              set
              {
                  tracedPathLeft = value;
              }
          }
  
          public void NotifyCanvas() //Method being called when pressing an update button
          {
              NotifyPropertyChanged("TracedPathTop");
              NotifyPropertyChanged("TracedPathLeft");
              NotifyPropertyChanged("TracedPath");
          }
  
          #region INotifyPropertyChanged Members
  
          public event PropertyChangedEventHandler PropertyChanged;
  
          private void NotifyPropertyChanged(string propertyName = "")
          {
              if (PropertyChanged != null)
              {
                  PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
              }
          }
          #endregion
      }
  
      ObservableCollection&lt;Waypoint&gt; waypointList = new ObservableCollection&lt;Waypoint&gt;();
  
      public ObservableCollection&lt;Waypoint&gt; WaypointList
      {
          get
          {
              return waypointList;
          }
          set
          {
              waypointList = value;
  
              NotifyPropertyChanged("WaypointList");
          }
      }
  
      #region INotifyPropertyChanged Members
  
      public event PropertyChangedEventHandler PropertyChanged;
  
      private void NotifyPropertyChanged(string propertyName = "")
      {
          if (PropertyChanged != null)
          {
              PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
          }
      }
      #endregion
  }
  </code></pre>
  
  <p>Here is the polylineModel class I made (similar to the one present upwards):</p>
  
  <pre><code>class WayPointPolyline : INotifyPropertyChanged
  {
      SolidColorBrush tracedPathColour;
      PointCollection tracedPath;
      double tracedPathTop;
      double tracedPathLeft;
  
      public SolidColorBrush TracedPathColour
      {
          get
          {
              return tracedPathColour;
          }
          set
          {
              tracedPathColour = value;
              NotifyPropertyChanged("TracedPathColour");
          }
      }
  
      public PointCollection TracedPath
      {
          get
          {
              return tracedPath;
          }
          set
          {
              tracedPath = value;
              NotifyPropertyChanged("TracedPath");
          }
      }
  
      public double TracedPathTop
      {
          get
          {
              return tracedPathTop;
          }
          set
          {
              tracedPathTop = value;
              NotifyPropertyChanged("TracedPathTop");
          }
      }
  
      public double TracedPathLeft
      {
          get
          {
              return tracedPathLeft;
          }
          set
          {
              tracedPathLeft = value;
              NotifyPropertyChanged("TracedPathLeft");
          }
      }
  
      #region INotifyPropertyChanged Members
  
      public event PropertyChangedEventHandler PropertyChanged;
  
      private void NotifyPropertyChanged(string propertyName = "")
      {
          if (PropertyChanged != null)
          {
              PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
          }
      }
      #endregion
  
  }
  </code></pre>
  
  <p>However in the class called Waypoint</p>
  
  <p>I want to replace PointCollection with:</p>
  
  <pre><code>        public List&lt;WayPointPolyline &gt; TracedPaths
          {
              get
              {
                  return tracedPaths;
              }
              set
              {
                  tracedPaths = value;
              }
          }
  </code></pre>
  
  <p>The xaml is where the hard part comes, since currently it adds only a single pointcollection per class addded in the List, what I need is a List where you add x classes, class x can contain data for y lines. Any idea what to do?</p>
  
  <p>Thanks on advance!</p>