/// <summary>
        /// Gets the string trace that is used to build the path.
        /// </summary>
        /// <returns></returns>
        public string GetTracePathValue()
        {
            ApplyPropertiesEventArgs e = new ApplyPropertiesEventArgs(DataContext, this, BreadcrumbBar.ApplyPropertiesEvent);

            e.Trace      = Trace;
            e.TraceValue = TraceValue;
            this.RaiseEvent(e);
            return(e.TraceValue);
        }
        //private static DataTemplateKey GetResourceKey(object item)
        //{
        //    XmlDataProvider xml = item as XmlDataProvider;
        //    DataTemplateKey key;
        //    if (xml != null)
        //    {
        //        key = new DataTemplateKey(xml.XPath);
        //    }
        //    else
        //    {
        //        XmlNode node = item as XmlNode;
        //        if (node != null)
        //        {
        //            key = new DataTemplateKey(node.Name);
        //        }
        //        else
        //        {
        //            key = new DataTemplateKey(item.GetType());
        //        }
        //    }
        //    return key;
        //}

        private void ApplyProperties(object item)
        {
            ApplyPropertiesEventArgs e = new ApplyPropertiesEventArgs
                                             (item, this, BreadcrumbBar.ApplyPropertiesEvent);

            e.Image      = Image;
            e.Trace      = Trace;
            e.TraceValue = TraceValue;
            this.RaiseEvent(e);
            Image = e.Image;
            Trace = e.Trace;
        }