/// <summary>
 /// Gets an object given an <paramref name="item"/> and
 /// a <see cref="ValuePath"/> to the dependency property that
 /// should be used for lookup.
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 protected virtual string getValuePath(object item)
 {
     return(PropertyPathHelper.GetValueFromPropertyInfo(item, ValuePath) as string);
 }
 /// <summary>
 /// Gets an object given an <paramref name="item"/> and
 /// a <see cref="SubentriesPath"/> to the dependency property that
 /// should be used for lookup.
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 protected virtual IEnumerable getSubEntries(object item)
 {
     return(PropertyPathHelper.GetValueFromPropertyInfo(item, SubentriesPath) as IEnumerable);
 }
 /// <summary>
 /// Gets a parent object given an <paramref name="item"/> and
 /// a <see cref="ParentPath"/> to the dependency property that
 /// should be used for lookup.
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 protected virtual object getParent(object item)
 {
     return(PropertyPathHelper.GetValueFromPropertyInfo(item, ParentPath));
 }