我有一个通过VisualBrush完成的缩略图预览。预览是一个ItemsControl,它包含其他元素RichTextBox。
var preview = new VisualBrush(itemsControl, ViewboxUnits = BrushMappingMode.Absolute,
Viewbox = Rect(controlSize),
Stretch = Stretch.Uniform);
当ItemsControl是Application可视化树的一部分时,预览和控件本身的一切都很好,但是当我从Application可视化树中删除ItemsControl时(例如canvas.Remove(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)具有相同的差异,仍然可以正确显示在预览中。
我无法理解如何做canvas.Remove(itemsControl)隐藏RichTextBox但保留其他控件!任何想法将不胜感激!
答案 0 :(得分:2)
视觉画笔无法冻结。因此,在从可视树中分离控件之前,可以从VisualBrush创建ImageBrush。以下是如何执行此操作的示例:“Freeze” that VisualBrush。