从屏幕上的控件分离后,RichTextBox文本在VisualBrush中消失

时间:2012-04-05 18:27:51

标签: c# wpf richtextbox visualbrush

我有一个通过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但保留其他控件!任何想法将不胜感激!

1 个答案:

答案 0 :(得分:2)

视觉画笔无法冻结。因此,在从可视树中分离控件之前,可以从VisualBrush创建ImageBrush。以下是如何执行此操作的示例:“Freeze” that VisualBrush