private static void UpdateContent(Control container, object value, IDataTemplateSelector selector)
        {
            if (selector != null)
                value = selector.SelectTemplateWithContext(value, container);

            var viewModel = value as IViewModel;
            if (viewModel != null)
                value = ViewModelToViewConverter.Instance.Convert(viewModel);

            var viewManager = container.GetBindingMemberValue(AttachedMembers.Control.ContentViewManager);
            if (viewManager == null)
            {
                container.Controls.Clear();
                var content = value as Control;
                if (content == null && value != null)
                    content = new TextBox
                    {
                        ReadOnly = true,
                        Text = value.ToString(),
                        Multiline = true
                    };
                if (content != null)
                {
                    content.Dock = DockStyle.Fill;
                    content.AutoSize = true;
                    container.Size = content.Size;
                    container.Controls.Add(content);
                }
            }
            else
                viewManager.SetContent(container, value);
        }
 private static void ContentChanged(Control control, AttachedMemberChangedEventArgs<object> args)
 {
     UpdateContent(control, args.NewValue, control.GetBindingMemberValue(AttachedMembers.Control.ContentTemplateSelector));
 }