WPF плиточный фон смещение - PullRequest
       22

WPF плиточный фон смещение

0 голосов
/ 11 января 2010

У нас есть довольно сложное приложение WPF (которое я не могу показать здесь), которое каким-то образом имеет мозаичный фон, смещенный относительно одного из его пользовательских элементов управления. Мне не удалось воспроизвести эту проблему в «чистом» проекте WPF, но я попытаюсь проиллюстрировать проблему на следующем рисунке:

WPF Background Tile Misalignment
(источник: kintespace.com )

Серая область представляет пользовательский элемент управления, а черные и красные флажки представляют мозаичный фон внутри пользовательского элемента управления. Белый фон представляет окно, содержащее элемент управления. Здесь используется VisualBrush, но та же проблема возникает с DrawingBrush. Я бы предпочел , а не , чтобы использовать ImageBrush.

Можете ли вы открыть «чистый» проект WPF и создать что-то, что приведет к неправильному выравниванию мозаичного фона, как это?

Ответы [ 3 ]

0 голосов
/ 12 января 2010

Эта проблема связана с тем, что мозаичный фон вмещается в вычисленную высоту экземпляра UserControl в окне хостинга. Я все еще не могу воспроизвести эту проблему в новом проекте, но она «решена» (путем размещения панелей в пользовательском элементе управления горизонтально, а не вертикально).

0 голосов
/ 12 января 2010

Вот два метода диагностики, которые могут быть полезны в таких ситуациях, как ваша:

  1. Возьмите свой сложный проект, сделайте копию и начните вырывать большие фрагменты кода и XAML, пока проблема не исчезнет. Затем отложите последний раздел и аккуратно вырвите вещи. Повторяйте, пока не найдете изменение, которое имеет значение.

  2. Запустите приложение, разбейте, где локальная переменная ссылается на ваш UserControl, затем изучите визуальное дерево чуть выше и ниже вашего UserControl в окне Locals или Watch. Посмотрите на внутренние свойства каждого Visual VisualOffset, VisualTransform и VisualContentBounds. Эти свойства обычно подскажут вам, какое свойство установлено неправильно, и оттуда вы можете выяснить, почему.

0 голосов
/ 11 января 2010

Это можно сделать, если корень макета пользовательского элемента управления имеет -10 левое поле и -10 верхнее поле. мозаичный фон в корне макета пользовательского элемента управления выглядит так, что проблема с выравниванием, а не с кистью.

...