У меня есть пользовательская панель для списка
<ItemsPanelTemplate x:Key="FloatPanelTemplate">
<Controls:FloatPanel x:Name="CardPanel" />
</ItemsPanelTemplate>
Панель размещает свои дочерние элементы, используя свойства зависимостей X и Y.
Это все работает хорошо, когда FloatPanel используется сам по себе - я использую FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.AffectsMeasure для свойств зависимостей дочерних элементов, чтобы сообщить FloatPanel перерисовать его макет.
Когда я использую его в Listbox (код выше), он в первый раз хорошо рисует, но когда я перетаскиваю дочерние элементы (которые изменяют X и Y элемента), он не уведомляет Listbox, что ему нужно перерисовать панель FloatPanel. дети. Я думаю, что проблема связана с тем фактом, что каждый элемент в связанной коллекции обернут с ListBoxItem.
Надеюсь, я описал то, что я делаю достаточно хорошо, чтобы кто-то мог сказать мне, как заставить панель (или ее дочерние элементы) сказать, что она должна снова выполнить процедуры Layout. Как я уже сказал, это работает один раз (первоначальное рисование), но затем перетаскивание элементов не работает (Listbox не знает, что его дочерние элементы изменились и его необходимо ретранслировать.) Если я перетаскиваю элемент, а затем изменяю размер окна, список выводит макет и предметы нарисованы в их новых местах.
Как мне уведомить ListBox (или, что более важно, FloatPanel в ItemsPanelTemplate), что он должен сделать проход Layout?