У меня есть Canvas, который я заполняю ObservableCollection<UIElement> путями. Я также использую это, чтобы рисовать эскизы в моем ListView, что убивает мою производительность на более слабом оборудовании.
Я знаю, когда мой ObservableCollection меняется, поэтому я хочу просто визуализировать его как System.Controls.Image. (Другие идеи приветствуются)
Но ничего не нахожу - там много всяких форм или сохранения в виде файла. Но я просто хочу это во время выполнения.
Как я могу визуализировать мой Canvas как System.Controls.Image?
По предложению Эша я попытался визуализировать его внутри визуальной кисти - что ничего не отображает - даже если я пытаюсь привязать текст данных к родительскому объекту.
<Rectangle Width = "100"
Height = "100">
<Rectangle.OpacityMask>
<VisualBrush>
<VisualBrush.Visual>
<custom:CustomPreviewSvgControl PreviewViewModel = "{Binding RelativeSource = {RelativeSource Mode=FindAncestor, AncestorType = {x:Type Rectangle}}}"
Width = "100"
Height = "100"
/>
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.OpacityMask>
</Rectangle>
как я могу это сделать?
ObservableCollection из UIElements - неправильный подход. Вместо этого используйте ItemsControl и привяжите его к коллекции элементов данных. Затем используйте DataTemplate (s) для визуализации элементов. Начните читать здесь: Обзор шаблонов данных.
Вы имеете в виду взять Canvas как ItemsPanel? Потому что мне все равно нужен холст, чтобы мои пути svg были в правильном положении?





использовать VisualBrush, может быть?