У меня есть WrapPanel
, который будет содержать несколько различных пользовательских UserControls
. В зависимости от сценария мне может понадобиться отфильтровать, какие UserControls
видны. Моя цель состоит в том, чтобы я мог переключать элементы управления, которые видны на лету, показывая / скрывая элементы управления, которые необходимо отфильтровать, смещая оставшиеся элементы управления в верхнем левом углу панели.
Сейчас я просто устанавливаю свойство Visibility
элемента управления на Visibility.Collapsed
, когда я не хочу, чтобы они появлялись. Я думал, что, поскольку я использовал WrapPanel
, остальные элементы управления переместятся в верхний левый угол панели.
Вместо этого, после сокрытия некоторых из UserControls
элементы управления, которые все еще видимы , остаются точно такими же, какими они были раньше, и у меня остаются пробелы между элементами управления, которые все еще отображаются. Я открыл свое приложение в Silverlight Spy , и оно показывает, что UserControls
все еще там (что имеет смысл), но просто невидимы.
Итак, мой вопрос:
Есть ли способ, которым я могу показать / скрыть UserControls
в пределах WrapPanel
, который позволяет все еще видимым UserControls
скользить в их новые позиции (все смещаются в верхнем левом углу - аналогично StackPanel
)
Я обсуждал полное удаление UserControls
из WrapPanel
(думаю, это будет работать) и сохранение их в памяти до тех пор, пока они не понадобятся. Затем, если бы я хотел показать / скрыть другие элементы управления, я бы получил их из объекта в памяти. Похоже, что должен быть лучший способ сделать это.
Если у кого-нибудь есть какие-либо предложения или советы, это будет с благодарностью. Спасибо!
-Lloyd
ОБНОВЛЕНИЕ:
XAML: (очень просто)
<toolkit:WrapPanel x:Name="MyLayout" Height="300" HorizontalAlignment="Left" VerticalAlignment="Top" Width="400" />
Code-Behind: UserControls добавляются динамически:
MyLayout.Children.Add(oUserControl)
И они также динамически разваливаются:
oUserControl.Visibility = Visibility.Collapsed