@pixelbobby: спасибо, мне понравилось, поэтому я использовал. Предыдущее название было плохим.

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

Пример: рассмотримWrapPanel который содержит толькоLabelс текстом. КогдаLabel заложенWrapPanel в начале новой строки все начальные пробелы будут удалены из текста. Это действительно сделаетLabel короче.

Единственная мысль, которая знает, где именно будет такойLabel заложенWrappPanel это делает макетирование. Таким образом, один из подходов для этого заключается в кодировании пользовательскихPanel что переопределяетMeasureOverride а такжеArrangeOverride и изменитьLabelвнутриMeasureOverride перед звонкомMeasure наLabel, Мне это не нравится, потому что:

Это безобразный хак (Panel и особенноMeasureOverride а такжеArrangeOveride следует только положение детей не менять их).Я не уверен, но я думаю, что если я изменилLabel внутриMeasureOverride Label приведет к обновлению макета в ответ, что приведет к другому (рекурсивному) вызовуMeasureOverride (=> бесконечный цикл).

ТакПожалуйста, предложите правильный дизайн для этого сценария. Как это должно сделать это? Мне приходит в голову следующее:

Есть регулярныйWrapPanel.Каждый раз егоWidth или жеHeight изменен или некоторые дочерние элементы изменены (его дочерние элементы могут быть перемещены) обновить дочерние элементыдоMeasureOverride а такжеArrangeOverride называется.В процессе обновления детей (2.) нет звонкаMeasure или жеArrange изWrapPanel может быть изготовлен.Вопрос: Как мне временно запретить все такие звонки?

Прежде чем вы предложите мне использоватьRichTextBox или жеTextBlock иметь дело с пробелами в начале строк, обратите внимание, чтоLabels и пробелы являются лишь примером - это немного сложнее. Но если я знаю, как решитьLabels и пробелы ', я тоже буду знать, как решить реальную проблему.

Если вы хотите знать, зачем мне это делать, посмотрите на мой вопросСоздать редактор гитарных аккордов в WPF а такжеОтвет Б.Б..

Ответы на вопрос(0)

Ваш ответ на вопрос