2014-11-11 1 views
0

У меня в основном есть same problem as this guy. Дело в том, что я хочу, чтобы на экране было определенное количество прямоугольников, в зависимости от размера экрана/разрешения. Теперь первый комментарий по этому вопросу гласит: «Создание элементов пользовательского интерфейса в процедурном коде в технологиях на основе XAML обескуражено, громоздко, возможно, плохая идея и просто неправильно».Могу ли я определить количество прямоугольников в сетке во время выполнения?

Так есть ли другой способ, которым я могу достичь своей цели?

Один из способов, который я могу представить, состоит в том, чтобы иметь как минимум 3x3 прямоугольники, но добавить код UI для 6x3 и сделать последние 3 строки видимости свернутыми. В приложении загрузки я мог бы выяснить, могу ли я поместиться больше строк и выборочно сделать их видимыми. Мне все равно хотелось бы узнать, есть ли более чистый подход.

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

ответ

1

Я понимаю общее мнение, что приложение XAML должно объявить как можно больше пользовательского интерфейса в XAML. Но я также считаю, что можно быть слишком догматичным в отношении вещей. Если у одного действительно есть сценарий, в котором макет элементов пользовательского интерфейса, который в противном случае был бы выбран во время разработки, неизвестен до времени выполнения, то почему бы не заполнить пользовательский интерфейс во время выполнения на основе этой информации?

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

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

Я пошел вперед и отправил ответ на вопрос, с которым вы связались. Я не знаю, действительно ли это то, что вам нужно, но если так, вы можете посмотреть там. Мне кажется, что главный вопрос здесь «это действительно так неправильно настроить мой интерфейс во время выполнения?» и мой ответ на это, как вы видите, «нет, не обязательно».

+0

Спасибо, что поделились своими мыслями. Ваше решение отлично работало. Для потомков, если вы хотите приспособиться к прямоугольникам, вы можете установить HorizontalAlignment и VerticalAlignment на Stretch, если хотите заняться всем доступным пространством, как я, или установить ширину и высоту прямоугольника вручную. – Freakishly

+0

-1. Как указано OP в комментарии выше, все, что ему нужно, это установить пару свойств в XAML. Вы говорите о решении, которое не соответствует принятым, хорошо известным передовым практикам WPF. Кроме того, поскольку вы не указали какой-либо код, ваш пост можно считать бесполезным тираном, а не правильным ответом на проблему OP. –

+0

@HighCore: добро пожаловать на Ваше мнение. Но здесь нет кода, потому что в этом нет смысла (так же, как в OP не было никакого смысла, включая код в его вопросе). И вы полностью неправильно поняли комментарий OP ... установка этих свойств не затрагивает его _question_, это всего лишь способ отформатировать отдельные ячейки сетки в контексте _actual answer_. Вы должны внимательно прочитать, прежде чем вы начнете волновать эту ничью, особенно когда сам ОП указывает ответ. –