private static void OnContentTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ContentPresenter p = d as ContentPresenter;

            if (p != null)
            {
                string resource = e.NewValue as string;
                if (resource == null)
                {
                    p.ContentTemplate = null;
                }
                else
                {
                    p.ContentTemplate = p.TryFindResource(resource) as DataTemplate;
                }
            }
        }