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)); }