У меня есть класс, который наследует класс InkCanvas
. Я переопределил VisualChildrenCount
свойство и метода GetVisualChild
:Drawing Stroke and DrawingVisual в пользовательском InkCanvas
Visual GetVisualChild(int index)
{
if (index == 0)
{
return InkCanvas.GetVisualChild(index);
}
return visuals[index - 1].Visual;
}
int VisualChildrenCount
{
get { return visuals.Count + InkCanvas.VisualChildrenCount; }
}
Где визуалы моей коллекции визуальных объекты, а Visual
свойства возвращает объект DrawingVisual
. Я использую этот класс для добавления и отображения DrawingVisual
объектов (из соображений производительности):
void AddVisual(MyVisual visual)
{
if (visual == null)
throw new ArgumentNullException("visual");
visuals.Add(visual);
AddVisualChild(visual->Visual);
AddLogicalChild(visual->Visual);
}
Проблема заключается в следующем: когда я рисую новый Stroke
(в свободном рисунок с помощью мыши) этот ход добавляются к InkCancas, но в предыдущем DrawingVisual (Z-порядок), поэтому, если, например, я рисую штрих под большим прямоугольником, я ничего не вижу, потому что штрих скрыт.
Как я могу исправить эту непродуманную проблему?