2

我有一个通过 VisualBrush 完成的缩略图预览。Preview 是一个 ItemsControl,它包含其他元素 RichTextBox。

var preview = new VisualBrush(itemsControl, ViewboxUnits = BrushMappingMode.Absolute,
                    Viewbox = Rect(controlSize),
                    Stretch = Stretch.Uniform);

当 ItemsControl 是应用程序可视化树的一部分时,预览和控件本身显示得很好,但是当我从应用程序可视化树中删除 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 之后)。但是其他元素(例如路径)具有相同的差异,并且仍然可以正确显示在预览中。

我无法理解 canvas.Remove(itemsControl) 如何隐藏 RichTextBox 但保留其他控件!任何想法将不胜感激!

4

1 回答 1

2

视觉画笔无法冻结。因此,您可以在从可视树中分离控件之前从 VisualBrush 创建 ImageBrush。这是一个如何做到这一点的示例:“冻结”该 VisualBrush

于 2012-04-05T21:09:47.800 回答