Можно ли сделать элементы управления сеткой WPF непрозрачными во время разработки? - PullRequest
1 голос
/ 17 января 2009

Итак, я только начинаю с WPF, и меня очень раздражает тот факт, что, если я положу две сетки друг на друга, верхняя сетка не будет непрозрачной. Это делает проектирование чрезвычайно раздражающим. Можно ли это как-то отключить?

Я просто создаю ваше стандартное приложение Winforms STYLE, но в WPF. Я просто пытаюсь преодолеть этот разрыв. В Winforms (и VB) у вас всегда будут групповые блоки или что-то в форме, а затем, в зависимости от контекста пользователя, один из этих групповых блоков будет сверху. Это то, как я проектировал формы с незапамятных времен. Здесь должно быть одно из двух:

A) Это не рекомендуемый способ разработки Windows с использованием WPF, но я не понимаю, что вы должны делать

B) Есть свойство сделать сетки непрозрачными, чтобы я мог построить окно в том стиле, к которому я привык.

Я в порядке с ответами, которые решают либо А, либо Б. Если я делаю вещи неправильно, потому что они изменились, тогда, пожалуйста, просветите меня.

Обновление: оказывается, я могу сделать сетку непрозрачной, установив цвет фона, но теперь мне кажется, что я заблокирован на белом фоне, а не придерживаюсь системных цветов.

Ответы [ 2 ]

2 голосов
/ 17 января 2009

Вы можете использовать SystemColors, чтобы цвет фона элемента управления соответствовал (а не был белым).

Я не понимаю, почему вы хотите поместить одну сетку поверх другой. В WPF вы обычно используете одну сетку для объединения нескольких визуальных элементов в одном регионе. Можете ли вы объяснить, почему вы хотите скрыть вещи на заднем плане с элементами переднего плана?

Звучит так, будто вы внедряете элемент управления с вкладками - переключение между страницами элементов управления в зависимости от фокуса. Вы экспериментировали с новым TabControl?

Я перехожу от WinForms к разработке WPF везде, где это возможно, и обнаружил, что при этом потребовалась некоторая корректировка. У WPF совершенно другой способ раскладывать вещи, и теперь, когда я чувствую себя более комфортно с этим, я думаю, что он лучше. Я предполагаю, что вам просто нужно немного подняться по кривой обучения.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: В ответ на ваш комментарий, я думаю, вы можете иметь элемент управления вкладки без вкладок, хотя я сам не пробовал (может быть стоит другой вопрос на SO). Элементы управления вкладками являются заголовочными элементами управления, что означает, что они имеют элемент заголовка и элемент содержимого. В этом случае заголовок - это кнопка вкладки, содержимое - элемент страницы. Вы можете указать ControlTemplate, который подробно показывает, как эти элементы должны отображаться относительно друг друга.

Интересно, что многие другие типы общего элемента GUI также являются заголовочными элементами управления:

  • Пункты меню - Текст / значок пункта меню является заголовком, а необязательное подменю - содержимым
  • Древовидное представление - Каждый узел является заголовком, а необязательные дочерние элементы находятся в содержимом
  • Групповое поле - Заголовок, ну, в общем, заголовок, а контент, ну, в общем, содержание:)

Обратите внимание, что в случае элементов меню и представлений дерева тип может рекурсивно вкладываться в себя. Это довольно элегантно и может дать несколько совершенно разных опций представления по сравнению с одной и той же логической моделью только с изменениями в шаблоне элемента управления.

Для получения дополнительной информации читайте о HeaderedContentControl и HeaderedItemsControl

0 голосов
/ 17 января 2009

Вы можете использовать следующее:

  <Grid Background="{DynamicResource {x:Static SystemColors.WindowBrush}}">  
  <!-- content -->
  </Grid>

Это будет реагировать на изменения системных цветов на лету (это делает DynamicResource).

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