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



我有一个缩略图预览,它是通过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。

最新更新