2012-03-23 2 views
1

В одном из моих предыдущих приложений мне нужно было добавить элементы управления в flowlayoutpanel в проект winforms динамически, но мне нужно было, чтобы они перестали загружаться, когда больше не было места в панель для их соответствия.Остановить загрузку элементов управления на панели Wrap после того, как она «полностью заполнена»

Для достижения этой цели я писал: https://github.com/LucasMoffitt/WordFiller/blob/master/WordFiller.Controls/WordLayoutPanel.cs

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

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

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

У кого-нибудь есть идеи?

ответ

0

Так что я в конечном итоге принимает в некоторых предложений и пришли к этому:

https://github.com/LucasMoffitt/CustomWrapPanel

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

Я рекомендую все материалы, если кто-либо найдет более приятный способ сделать это!

0

Вы можете проверить: ActualHeight/AcxtualWidth - DesiredHeight/DesiredWidth. Когда DesiredHeight становится больше ActualHeight - панель начала перекрываться.

+0

Когда я его проверю? Я должен буду следить за тем, что было добавлено до сих пор. – Lucas

+0

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

+0

Спасибо за помощь. Я думал о том, что вы сказали, и играл с разными подходами, см. Мой ответ ниже! Еще раз спасибо! – Lucas