我有一个缩略图预览,它是通过VisualBrush完成的。Preview是一个ItemsControl,它包含其他元素RichTextBox。
var preview = new VisualBrush(itemsControl, ViewboxUnits = BrushMappingMode.Absolute,
Viewbox = Rect(controlSize),
Stretch = Stretch.Uniform);
当ItemsControl是应用程序可视化树的一部分时,所有预览和控件本身都会显示得很好,但当我从应用程序可视化树状图(例如canvas。remove(ItemsControl))中删除ItemsControl时,RichTextBox控件在预览(VisualBrush)中变得不可见,而所有其他控件都照常显示。
public void SetActiveControl(ItemsControl newItemsControl) {
canvas.Children.Remove(currentItemsControl);
canvas.Children.Add(newItemsControl);
currentItemsControl = newItemsControl;
}
我比较了RichTextBox从应用程序可视化树分离之前和之后的属性。不同之处在于属性IsLoaded(在TRUE之前,在FALSE之后)和IsVisible(在TRUE之后,在FALSE之前)。但是其他元素(例如Path)具有相同的差异,并且仍然在预览中正确显示。
我搞不懂如何做画布。Remove(itemsControl)隐藏RichTextBox,但保留其他控件!任何想法都将不胜感激!
视觉画笔无法冻结。因此,在将控件从可视化树中分离之前,您可以从VisualBrush创建ImageBrush。下面是一个如何做到这一点的例子:"冻结"VisualBrush。