передовая практика для рендеринга набора элементов управления в WPF? - PullRequest
1 голос
/ 21 июля 2010

Я создаю приложение WPF, аналогичное по макету Microsoft Outlook, в котором у вас есть несколько кнопок навигации слева, а затем сетка справа, отображающая контент.Мне бы хотелось, чтобы эта область содержимого (которая представляла собой просто сетку, разделенную на левую сторону определенной ширины, а затем Width = "*" для правой стороны) изменилась в зависимости от выбранного элемента на левой стороне.Он будет отображать другой набор меток, кнопок и т. Д., Когда элемент изменится с левой стороны.Мне было любопытно, что будет считаться лучшим способом визуализации содержимого в правой части формы, а именно:

  • Используйте элемент управления Canvas, поместите на него элементы управления и «поменяйте» элементы управления Canvas каквыбранный элемент изменяется?
  • Создать какой-то пользовательский элемент управления для обмена содержимым в этой области?

Я понимаю, что этот вопрос субъективен, но я жду отзывов отболее опытные разработчики о том, как они обычно справляются с такой работой.

РЕДАКТИРОВАТЬ: правая сторона должна отображать определенный пользовательский интерфейс для каждого выбранного элемента - другими словами, пользовательский интерфейс с правой стороны настраивается для выбранногопредмет слева.

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Не могли бы вы использовать TabControl с вкладками с левой стороны, а затем стилизовать заголовок вкладки, чтобы он выглядел как не вкладка? НУЖНО быть сеткой с разделением?

3 голосов
/ 21 июля 2010

То, что вы, вероятно, ищете здесь, это шаблон данных. Если ваша правая панель была ContentControl, вы можете привязать содержимое к выбранному элементу с левой стороны. Затем вы можете определить шаблоны данных для каждого типа объекта, который есть в вашем списке слева.

Почти никогда не требуется использовать код для обмена содержимым в WPF - для этого и предназначено поведение DataTemplate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...