Контентконтроль или док панель для навигации wpf - PullRequest
0 голосов
/ 06 июня 2018

Я использую Contentcontrol, чтобы показать пользовательские элементы управления программы. Теперь у меня возникает проблема с закрытием пользовательских элементов управления. После поиска я нашел пример, когда пользовательские элементы управления загружаются в DockPanel
Теперь мои вопросы:

  1. В чем разница между этими двумя элементами управления?(Dockpanel vs ContentControl)

  2. Можно ли использовать этот элемент управления (dockpanel) вместо Contentcontrol для отображения пользовательских элементов управления приложения?

  3. Есть липохожий код для Contentcontrol?

    ucChild ChildWindow = new ucChild();  
    ChildWindow.ParentControl = this.UIPanel;  
    UIPanel.Children.Clear();  
    UIPanel.Children.Add(ChildWindow);
    

1 Ответ

0 голосов
/ 06 июня 2018

Стандартный отказ от ответственности для людей, кодирующих WPF как WinForms: First off;прямое манипулирование пользовательским интерфейсом - плохая идея.Вы должны изменить модель представления и позволить системе привязки обновить пользовательский интерфейс.Используйте шаблон MVVM;WPF будет работать для вас, а не против вас

На ваши актуальные вопросы:

  1. Все.Я имею в виду;они оба наследуются от FrameworkElement, но это все с точки зрения общности.

    • A DockPanel, как следует из названия, a Panel.То есть;он управляет макетом и размером одного или нескольких дочерних элементов.В частности, DockPanel хорош в ситуациях, подобных следующим: вы хотите, чтобы элемент занимал полный столбец ширины, затем другой охватывал верхнюю часть (за исключением предыдущего элемента) и чтобы последний элемент занимал оставшееся пространство.
    • A ContentControl - это, по сути, заполнитель, его цель - предоставить настраиваемое (и, самое главное, связываемое) свойство Content, в которое можно вставить другой элемент управления.Даже лучше;вы можете поместить туда объект и использовать DataTemplate для управления дисплеем (этот подход будет соответствовать MVVM).
  2. Вы можете 'действительно заменить один другим, см. выше

  3. Нет.ContentControl не является Panel и поэтому не имеет свойства Children.
...