В настоящее время я использую BOT PixelLab (Bag o 'Tricks) для управления ReorderListBox
, но я заметил некоторые существенные замедления в mousedown элемента списка.
Я отследил его до способа, которым элемент управления создает DragPreviewAdorner
, в частности, метод GetCurrentDPI
, который реализован просто как:
Matrix m = PresentationSource.FromVisual(visual)
.CompositionTarget
.TransformToDevice;
x = 96 / m.M11;
y = 96 / m.M22;
Дело в том, что для моих элементов списка M11
и M22
возвращаются в виде крошечных чисел, тем самым давая очень большой DPI (x = 100000 и y = 5500). Следовательно, вызывающий код в конечном итоге создает огромное растровое изображение в памяти, которое, в свою очередь, вызывает задержку при сборке мусора.
Мой вопрос: что может быть причиной этих, казалось бы, ошибочных значений в преобразовании? На экране все выглядит отлично. : - /
Спасибо.